mysql帮助-编写查询以显示多个类别中的产品,只要它们位于特定类别中

mysql帮助-编写查询以显示多个类别中的产品,只要它们位于特定类别中,mysql,Mysql,有一点问题,虽然我相信这很简单 我有一个表,其中产品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,尽

有一点问题,虽然我相信这很简单

我有一个表,其中产品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,尽管我知道其中一些猫属于不止一个类别,我已经检查过了。我知道我对分组和计数毫无用处,所以帮助理解这一点将是非常棒的

想想,这会帮助你:

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;

典型的结构是这样的,它似乎反映了你所拥有的

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
)
子查询查找类别100中产品的ProductID。外部查询会找到这些产品的子集,这些产品也属于另一个类别。

请尝试以下操作:

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;

这样更好,但似乎并没有全部归还,只是找到了其中的一部分。谢谢你们的回复:若你们能提供表的结构和数据,我会考虑更多=谢谢你的提议,但我们现在有答案了。你可以休息了!非常感谢,我添加了一个组并选择了prod_id,这正是我所需要的!我有很多关于mysql的知识需要学习,所以谢谢你的帮助!没问题-如果你对我的答案感到满意,你能接受吗-谢谢:非常感谢,这也很有效!我想有很多方法可以解决这个问题,学习时能得到帮助是很好的。再次感谢。