1

这是表 measuremart_product_categories:

在此处输入图像描述

我想要做的是选择产品在类别: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 表:

在此处输入图像描述

4

2 回答 2

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
于 2015-01-05T09:14:14.203 回答
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

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

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

于 2015-01-05T09:13:01.570 回答