Select 属于 2 个不同类别的产品

Select a product where it belongs in 2 different categories

这是table virtuemart_product_categories:

我想做的是 select 产品在 category:307 和 category:383 中的 virtuemart_product_id。 像这样的东西: (我知道 "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 的方法来实现它?也许我需要创建一个新的 table 并以某种方式建立关系?我认为使用一些 php 和将查询分开,但即使它有效,它也将是一种非常复杂和糟糕的编码方式。 提前致谢。

编辑:添加 products_en_gb table 还:

如果您想要一个产品分为两个类别,那么您可以加入 uhhu_virtuemart_products_en_gb 反对它自己,这样您就有两个类别列。这是一个简单的例子:

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

解决此类问题的一种方法是问问自己 "what must appear in row of the result enable me to filter the result?"

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

试试这个:

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