我有3个表,TableA,TableB和TableAB(多对多表)。
参见下面表格AB的例子:
TableAB
id_attribute | id_product_attribute
14 | 18
14 | 19
16 | 10
16 | 12
16 | 16
16 | 18
16 | 20
16 | 22
16 | 24
16 | 26
在此表中,我有来自TableA的id_attribute和来自TableB的id_product_attribute。
如果我想找出同时具有id_attributes 14和16的id_product_attribute,我应该怎么做?
基本上,我有一个id_attributes的组合,我正在寻找一个包含所有这些的特定id_product_attribute。
在上面的示例中,只有product_attribute 18具有属性14和16.我的第一个查询将找出所有属性。我现在遇到的这个问题是确定它来自这个表的产品属性。</ p>
感谢。
答案 0 :(得分:1)
你想要一个自我加入。
select distinct ab1.id_product_attribute
from tableAB ab1
join tableAB ab2 on ab1.id_product_attribute = ab2.id_product_attribute
where ab1.id_attribute = 14
and ab2.id_attribute = 16
这首先创建一个tableAB选择,只包含id_attribute 14.然后另一个选择只包含id 16.然后加入这两个只找到匹配。
答案 1 :(得分:0)
select
count(ab1.id_product_attribute),ab1.id_product_attribute,ab1.id_attribute
from ab ab1
join ab ab2
on ab1.id_product_attribute = ab2.id_product_attribute
where ab1.id_attribute in (14,16)
and ab2.id_attribute in (14,16)
group by ab1.id_product_attribute,ab1.id_attribute
having count(ab1.id_product_attribute) > 1;