来自多个类别的MySQL选择项不返回任何结果

时间:2014-05-15 16:55:32

标签: mysql left-join categories relational-division

我有这个SQL查询:

SELECT DISTINCT c.id, c.name 
FROM cars c LEFT JOIN 
     _rel_cars_categories rcc ON c.id=rcc.car_id 
WHERE (rcc.category_id=33 AND rcc.category_id=51) 
  AND c.status >=10

表格:

不幸的是,它返回0结果。当我替换AND和OR时,它工作正常,但我希望在这两个类别中得到所有这些。它也可以是3,4,5 ......类别。我怎样才能得到正确的结果?

2 个答案:

答案 0 :(得分:2)

要选择同时具有33和51作为category_id的汽车,请尝试以下操作:

SELECT c.id, c.name 
FROM cars c JOIN 
     _rel_cars_categories rcc ON c.id=rcc.car_id 
WHERE rcc.category_id IN (33,51) AND c.status >=10
GROUP BY c.name
HAVING count( distinct rcc.category_id ) = 2

答案 1 :(得分:0)

您的问题出在此处:WHERE (rcc.category_id=33 AND rcc.category_id=51)

显然,一个类别只能是33或51.您正在寻找的内容可能是WHERE ID IN (33,51),然后会返回任何提供的值的匹配。

所以你的最终查询应该是这样的:

SELECT DISTINCT c.id, c.name 
FROM cars c
LEFT JOIN _rel_cars_categories rcc ON c.id=rcc.car_id 
WHERE rcc.category_id IN (33,51) AND c.status >=10