非常感谢您阅读。
假设表格的以下摘录(供应商 - 零件SP)
------------------------
S# | P# | QTY
------------------------
S1 | P1 | 30
S1 | P2 | 35
S1 | P3 | 40
S2 | P1 | 100
S2 | P2 | 50
S3 | P2 | 30
S4 | P1 | 40
S4 | P2 | 35
我有兴趣了解如何构建查询,仅基于 - 优先
关于工会,交叉路口,差异,产品,自然连接,分部等将返回的操作让我们说供应S2提供的所有部件的供应商编号。
我知道如果我使用:
SP [S# , P#] DIVIDEBY (SP WHERE S# = 'S2') [P#]
我会得到供应商数字,这些数字至少>>所有这些部分,但S2 我无法想象我如何能够形成查询以仅返回供应商编号,这些供应商编号提供与供应商S2相同的部件完全。
这个问题是基于个人的科学兴趣。
答案 0 :(得分:1)
如果这有帮助,请告诉我。我正在使用自我加入。
select *
from infoz as t1
inner join infoz as t2
on t1.P# = t2.P#
where t1.S# = 's2'
让我们过滤此信息......
select t2.S#, COUNT(t2.P#) as cnt
from infoz as t1
inner join infoz as t2
on t1.P# = t2.P#
where t1.S# = 's2'
group by t2.S#
现在,您可以在此处查看S2的计数并按此过滤。
select *
from
(
select t2.S#, COUNT(t2.P#) as cnt
from infoz as t1
inner join infoz as t2
on t1.P# = t2.P#
where t1.S# = 's2'
group by t2.S#
) as r1
where r1.cnt = (select count(t.P#)
from infoz as t
where t.S# = 's2') and r1.S# ! = 's2'