首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自一对多关系的MySql连接表结果

来自一对多关系的MySql连接表结果
EN

Stack Overflow用户
提问于 2013-10-09 01:08:29
回答 2查看 1.5K关注 0票数 4

我有一个电子商务网站(MySql / PHP),我需要在两个连接表上获得一些结果。这是我所拥有的一个简化版本:

代码语言:javascript
复制
Table: product[
product_id,
other_irrelevant_stuff,
etc.
]

Table: product_to_category[
product_id,
category_id
]

产品可能有多个类别。我正在使用product p LEFT JOIN product_to_category p2c ON (p2c.product_id = p.product_id)。我需要获得产品的结果,有两个特定的类别分配给他们。

显然,如果我使用p2c.category_id = 1 AND p2c.category_id = 2,我将得不到任何结果,因为将不会有任何单行项目与这些条件匹配。如果我使用p2c.category_id = 1 OR p2c.category_id = 2,我会得到两个类别的所有结果(所有的category_id = 1和所有的category_id = 2),这是我不想要的。我只想得到既有category_id 1又有category_id 2的产品。

我通常对此很在行,但也许我只是在胡说八道。有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-10-09 01:17:08

group bycountdistinct配合使用时,这应该可以正常工作

代码语言:javascript
复制
select p.product_id
from product p
    join product_to_category pc on p.product_id = pc.product_id
where pc.category_id in (1,2)
group by p.product_id
having count(distinct pc.category_id) = 2

票数 1
EN

Stack Overflow用户

发布于 2014-05-09 15:49:05

只需执行以下操作...

代码语言:javascript
复制
select distinct tab1.product_id

from product tab1

join product_to_category tab2 on tab1.product_id = tab2.product_id

where tab2.category_id in (1,2)

group by tab1.product_id;

试试这个,你的问题就解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19254039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档