2012-07-10 44 views
1

我有一个产品表颜色表的关系选择从一个至少A和B到许多表

产品可以有多种颜色... EXP:产品A:有红,绿,蓝黄。

如何选择至少包含红色和绿色(动态)的产品?

例如:

Product: RED GREEN - PASS 
Product: RED GREEN YELLOW - PASS 
Product: RED YELLOW - FAIL 

不想加入解表或仅

这个问题是关系到 One to Many search using AND condition

我试图从基本面解决它独立的子查询。

在此先感谢

回答

4

像这样的东西应该工作

SELECT product.name 
    FROM product 
     JOIN color USING (product_id) 
WHERE color.name IN ('red', 'green') 
GROUP BY product.name 
HAVING COUNT(DISTINCT color.name) = 2 

其中HAVING子句指定列表中的项目数量。因此,如果您想要红色,绿色和黄色的产品,请将查询更改为

SELECT product.name 
    FROM product 
     JOIN color USING (product_id) 
WHERE color.name IN ('red', 'green', 'yellow') 
GROUP BY product.name 
HAVING COUNT(DISTINCT color.name) = 3 
相关问题