gpt4 book ai didi

MySQL:检查子集中的所有值是否在另一个表中并输出相应的ID

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

我有 3 张 table :

Store(sID, name, address, mID)
Sells(sID, pID)
Product(pID, name, manufacturer, price)

我需要找到哪些商店库存来自给定制造商的所有产品。例如:要搜索联合利华,我希望仅返回库存有“产品”中列出的所有联合利华产品的商店,而不仅仅是其中的一些产品。

我尝试了很多不同的查询,但大多数都完全不符合要求。

我是否正确地认为我需要创建联合利华生产的所有产品的子集,然后以某种方式通过 Sells 并检查每个 sID 的 pID 列表是否包含初始子集中的所有产品?然后我可以将结果与 Store 结合起来以获取商店详细信息。

如果这是正确的逻辑,那么从哪里开始呢?

这将创建所有联合利华产品的子集:

SELECT pID FROM Product WHERE manufacturer = "Unilever"

然后,我如何对照“销售”中的每个商店检查此列表,以找到包含列表中所有产品的商店?

最佳答案

一种可能的方法是连接产品表两次,一次通过 sells 表,一次直接连接,然后在每个连接表上使用 COUNT(DISTINT ...) 来检查它们是否匹配

SELECT st.*
FROM store st
INNER JOIN sells se ON st.sID = se.sID
INNER JOIN product pr1 ON se.pID = pr1.pID AND pr1.manufacturer = "Unilever"
INNER JOIN product pr2 ON pr2.manufacturer = "Unilever"
GROUP BY st.sID,
st.name,
st.address,
st.mID
HAVING COUNT(DISTINCT pr1.pID) = COUNT(DISTINCT pr2.pID)

关于MySQL:检查子集中的所有值是否在另一个表中并输出相应的ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40863963/

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