PHP查询过滤多对多MySQL

时间:2014-11-18 15:55:15

标签: php mysql filter

我有以下查询:

SELECT DISTINCT Names FROM all_uk
INNER JOIN cat_uk ON all_uk.Ref = cat_uk.Ref
INNER JOIN res_uk ON all_uk.Ref = res_uk.Ref
WHERE (cat_uk.Cat_Ref IN (25, 35)) AND (res_uk.Res_Ref = 1) AND (res_uk.Res_Ref = 2)

正如您所看到的,WHERE查询的第一部分是累积的(具有25或35参考的所有内容)。第二部分是我失败的地方:我想把结果限制在他们第二类中有1和2的那些。

选择其中一个(即1或2)会返回结果,但是当它们都被选中时我什么也得不到。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我想你想要这个查询

SELECT Names FROM all_uk
INNER JOIN cat_uk ON all_uk.Ref = cat_uk.Ref
INNER JOIN res_uk ON all_uk.Ref = res_uk.Ref
WHERE (cat_uk.Cat_Ref IN (25, 35)) 
GROUP BY Names
HAVING SUM(res_uk.Res_Ref = 1)>0
   AND SUM(res_uk.Res_Ref = 2)>0