mysql help - 写一个查询来显示多个类别中的产品,只要它们属于特定类别
对此有一点概率,但我确定它很简单!mysql help - 写一个查询来显示多个类别中的产品,只要它们属于特定类别
我有一个产品ID与类别ID匹配的表,这些是表中唯一的两个字段。
我想查看卡片类别(ID = 100)中的所有产品是否在任何其他类别中,或者只有那一个。我尝试了一些东西,但不能查询出来。
SELECT products_id, count(categories_id) as cats_in FROM `products_to_categories` WHERE categories_id = 100 group by products_id
这总是显示1的cats_in列,尽管我知道他们中的一些在多个类别,因为我已经检查。我知道我对分组和计数毫无用处,所以帮助理解这将非常棒!
试试这个:
select distinct
pc.cat_id
from
product_category pc
inner join
(
select prod_id from product_category where cat_id = 100
) cards on cards.prod_id = pc.prod_id;
认为,这将有助于您:
select product_id, count(distinct category_id), category_id
from products_to_categories
group by product_id
having category_id = 100
and count(distinct category_id) > 1;
这是更好的,但似乎并没有返回所有的人,它的发现只是其中的一些。谢谢你的回复:) – 2010-11-11 12:54:24
如果你要提供表格和数据结构,我会再想一想。 =) – rMX 2010-11-11 13:03:18
感谢您的提议,但我们现在有了答案。你可以休息! – 2010-11-11 13:16:09
典型的结构是这样的,似乎这反映了你有什么?
PRODUCTS
id integer primary key
productname varchar
CATEGORIES
id integer primary key
categoryname varchar
PRODUCTCATEGORIES
id integer primary key
productid integer
categorid integer
[unique index on (productid, categoryid) ... or you could make this dyad the primary key]
你可以这样做:
select productid from PRODUCTCATEGORIES
where categoryid <> 100 and productid in
(
select productid from PRODUCTCATEGORIES
where categoryid = 100
)
子查询发现产品的productids在100类外部查询发现那些还在其他类别产品的子集。
非常感谢,这也很好!我想有很多方法可以解决问题,学习时很有帮助。再次感谢。 – 2010-11-11 13:10:08
非常感谢,我添加了一个组,并选择了prod_id,这正是我需要的!我有很多需要了解的有关mysql的帮助! – 2010-11-11 13:06:33
没问题 - 如果您对我的回答感到满意,可以接受它 - 谢谢:) – 2010-11-11 13:52:51