嗨,我正在尝试编写一个查询,我正在努力弄清楚如何去做。
我有供应商表和供应商零件表我想写一个查询,列出供应商零件表中指定相关零件的供应商。如果供应商没有所有指定的相关零件,则不应列出它们。
目前,我已经编写了一个非常基本的查询,列出了供应商是否有符合标准的相关供应商部件。
SELECT id ,name
FROM
efacdb.dbo.suppliers INNER JOIN [efacdb].[dbo].[spmatrix] ON
id = spmsupp
WHERE spmpart
IN ('ALUM_5083', 'ALUM_6082')
我只想向供应商展示他们是否有两个相关的部分。有谁知道我怎么做到这一点?
答案 0 :(得分:0)
使用子查询计算不同的出现次数:
select * from suppliers s
where 2 = (select count(distinct spmpart) from spmatrix
where id = spmsupp and spmpart in ('ALUM_5083', 'ALUM_6082'))
答案 1 :(得分:0)
作为一个注释,您可以修改查询以获得所需内容,只需使用聚合:
SELECT id, name
FROM efacdb.dbo.suppliers INNER JOIN
[efacdb].[dbo].[spmatrix]
ON id = spmsupp
WHERE spmpart IN ('ALUM_5083', 'ALUM_6082')
GROUP BY id, name
HAVING MIN(spmpart) <> MAX(spmpart);
如果您知道没有重复项,那么having count(*) = 2
也可以解决问题。