gpt4 book ai didi

mysql - 多对多加入附加位置

转载 作者:行者123 更新时间:2023-11-29 23:23:29 24 4
gpt4 key购买 nike

我想我有一个有点微不足道的问题,但我不知道这是如何工作的。我有以下具有简单多对多关系的公司和产品表。

我该如何扩展此查询,以便结果只包含所有产品 ID 为 1 AND 2 的公司?

我尝试在任何我能想象到的地方添加wheres和havings,但我所能得到的只是所有拥有id为x的产品的公司(没有额外的and)

公司表

id | name
-----------------
1 | Company 1
2 | Company 2
3 | Company 3

Companies_Products 表

id | product_id | company_id
----------------------------
1 | 1 | 1
2 | 2 | 1
3 | 3 | 1
4 | 1 | 2
5 | 1 | 3
6 | 2 | 3

产品表

id | name
-----------------
1 | Product A
2 | Product B
3 | Product C

声明

SELECT companies.name, 
companies.id AS company_id,
products.id AS product_id
FROM companies
LEFT JOIN company_products
ON companies.id = company_products.company_id
INNER JOIN products
ON company_products.product_id = products.id

最佳答案

如果您想要所有具有关联产品 1 和 2 的公司,您可以编写以下查询:

SELECT c.name, 
c.id AS company_id
FROM companies c
WHERE (SELECT COUNT(*)
FROM company_products cp
WHERE cp.company_id = c.id
AND cp.product_id in ('1', '2')
) = 2

转到Sql Fiddle

如果您想了解主查询中关联产品的信息,那么您必须在现有查询的基础上使用联接。

关于mysql - 多对多加入附加位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27121088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com