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
这是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