2015-12-02 89 views
0

嗨我想寫一個查詢,我正在努力弄清楚如何去做。
我有一個供應商表和一個供應商零件表我想寫一個查詢,列出在供應商零件表中指定了相關零件的供應商。如果供應商沒有全部指定的相關部件,則不應列出。 目前我寫了一個非常基本的查詢,列出供應商是否有符合標準的相關供應商部分。查詢滿足多個條件的記錄

SELECT id ,name 
FROM 
efacdb.dbo.suppliers INNER JOIN [efacdb].[dbo].[spmatrix] ON 
id = spmsupp 
WHERE spmpart 
IN ('ALUM_5083', 'ALUM_6082') 

我只想顯示供應商是否他們有兩個相關的部分。有誰知道我該怎麼做?

回答

0

使用子查詢與統計不同OCCURENCES:

select * from suppliers s 
where 2 = (select count(distinct spmpart) from spmatrix 
      where id = spmsupp and spmpart in ('ALUM_5083', 'ALUM_6082')) 
+0

感謝您的訣竅答覆 – user1412672

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也解決了這個問題。

相關問題