php - 一对多关系的 MySql JOIN 表结果

标签 php mysql sql

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

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 1category_id 2 的产品。

我通常很擅长这个,但也许我只是脑放屁。有什么想法吗?

最佳答案

这应该可以使用 group bycount with distinct:

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

关于php - 一对多关系的 MySql JOIN 表结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254039/

相关文章:

php - 如何根据 MediaWiki 中的页面插入不同的样式表?

sql - 在单个查询中具有不同约束的不同表上的多个 select 语句,没有结果显示为空值

php - 将当前页面、id、日期插入到 mySQL 表中

php - 在 phpMyAdmin 中找不到权限

PHP 如何创建一个名为 "do"的函数?

mysql - 连接两个不存在于另一个表中但在某些条件下存在的表

php - 如何从 session ID 获取值

PHP:一列表到一维数组

mysql - 从子查询结果中删除 id

java - Spring jpa native 查询在有 0 个结果时抛出 MySQLSyntaxErrorException