选择它所属的产品有两个不同的类别

时间:2015-01-05 09:09:44

标签: mysql sql select group-by in-operator

这是表virtuemart_product_categories:

enter image description here

我想要做的是选择产品在类别中的virtuemart_product_id:307和类别:383。 像这样的东西: (我知道" AND"表达式完全错误输入它作为我试图实现的一个例子)。

SELECT * 
FROM uhhu_virtuemart_products_en_gb AS a 
INNER JOIN uhhu_virtuemart_product_categories AS b ON a.virtuemart_product_id=b.virtuemart_product_id 
WHERE b.virtuemart_category_id=307 AND b.virtuemart_category_id=383

有没有sql方法来实现呢?也许我需要创建一个新的表并以某种方式建立关系?我认为使用一些PHP并分离查询的一个非常蹩脚的方式,但即使它工作它将是非常复杂的糟糕的编码方式。 提前谢谢。

编辑:还添加products_en_gb表:

enter image description here

2 个答案:

答案 0 :(得分:2)

试试这个:

SELECT * 
FROM uhhu_virtuemart_products_en_gb AS a 
WHERE a.virtuemart_category_id IN (307, 383)
GROUP BY a.virtuemart_product_id 
HAVING COUNT(1) = 2

答案 1 :(得分:1)

如果您想要两个类别的产品,那么您可以加入uhhu_virtuemart_products_en_gb对抗itselt,以便您有两个类别列。这是一个简单的例子:

select p1.product_id from
product_category p1
inner join product_category p2 using(product_id)
where p1.category_id=307
and p2.category_id=383

解决这类问题的一种方法是问自己"结果行中必须出现什么使我能过滤结果?"

这不是唯一的方法,但我认为这是一个相当简单的可视化方法。