mysql - 使用 mysql 查找具有 2 个关联(一起)的项目

标签 mysql sql many-to-many

我有包含 3 个表的数据库:

product (id, name, price, ...)
product_option (id, product_id, option_id)
option (id, value)

产品有多种选择

例如,我需要找到具有选项 A 选项 B 的产品,而不是仅具有选项 A 的产品。

我正在使用这样的想法:

select * from product
left join product_option on product_option.product_id = product_id

where product_option.option_id in (1,2,3) 
and product_option.option_id in (4)
group by product.id

当然结果总是空的。 我需要带有 option_id (1 or 2 or 3) and 4

的产品

我该怎么做?

最佳答案

因为你想要两个不同的匹配,你需要加入 product_option twise

select * from product
left join product_option AS po1 on product_option.product_id = product_id
left join product_option AS po2 on product_option.product_id = product_id

where po1.option_id in (1,2,3) 
and po2.option_id in (4)
group by product.id

关于mysql - 使用 mysql 查找具有 2 个关联(一起)的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7012983/

相关文章:

php - 未从 mysql 数据库收到电子邮件

SQL GROUP_CONCAT + SUM + AVG

mysql - 将默认字符集更改为拉丁字符集

php - 如何在 MySQL 中存储 GMaps API 反向地理编码响应(使用 PHP)?

sql - 使用选择查询更新表

mysql - 使用 Eloquent 实现 Laravel 4 数据透视表

javascript - 在复选框更改时更新数据库字段 - AJAX

where-clause - Sql在WHERE子句中选择空值和非空值

java - Hibernate注解多对多关系理解

php - 获取多对多表中的所有数据