gpt4 book ai didi

sql - 棘手的 sql 查询 - 寻找替代供应商(关系部门)

转载 作者:行者123 更新时间:2023-12-01 10:02:40 26 4
gpt4 key购买 nike

这是我从一本书上得到的一个问题(不记得是哪本书了),它是这样的:

你有三个表:

  • 供应商(supId,名称)
  • 产品(prodId,名称)
  • 库存(supId, prodId)

您需要通过一个查询找到所有库存中包含供应商 X 拥有的所有(或更多)产品的供应商(假设供应商 X 是 supId=1 的供应商) .

(因此,如果供应商 1 的库存中有香蕉和苹果,您需要找到所有至少携带香蕉和苹果的供应商)

您只能使用标准 SQL(包括连接)。

显然这是一个已知问题/问题,您应该检查这个问题: How to filter SQL results in a has-many-through relation(优秀的解决方案和分析)

最佳答案

这个问题被称为 relational division .

一个解决方案是双重否定。您可以选择所有供应商,对于这些供应商,不存在供应商 X 交付的产品,即不是由他们交付的:

select  distinct other_supplier.SupID
from Inventory other_supplier
where not exists
(
select *
from Inventory supplier_X
where supplier_X.supId = 1 -- For supplier X
and not exists
(
select *
from Inventory other_product
where other_supplier.supId = other_product.Supid
and supplier_X.prodId = other_product.prodId
)
)

Live example at SQL Fiddle.

关于sql - 棘手的 sql 查询 - 寻找替代供应商(关系部门),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318572/

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