2014-02-12 63 views
-1

請問您能幫我建立一個使用SQL的SELECT嗎?SQL - 唯一結果

我有如下表:

Table: Delivery | Columns: (idProvider, idMaterial, idProject, quantity) 

我想選擇所有項目(idProject)其中唯一提供商(idProvider)是供應商= 1

P.S:一個項目可以有許多供應商。

我已經試過簡單:

Select (SELECT idProject FROm Delivery WHERE idProvider = 1) 

,但它不工作,因爲它返回擁有多個供應商的項目。

+0

您正在使用什麼數據庫? SQL Server或MySQL?請適當標記問題。 –

+0

這是作業嗎?存在表提供者? – cavalsilva

+0

是這個sql服務器還是mysql? – Tanner

回答

2
SELECT foo.idProject 
FROM Delivery AS foo 
LEFT JOIN Delivery AS bar 
    ON foo.idProject = bar.idProject 
    AND bar.idProvider <> 1 
WHERE foo.idProvider = 1 
    AND bar.idProject IS NULL; 
+0

對不起,遲到了,但非常感謝!它非常完美! – user3302039

0

作爲替代AgRizzo的答案(因爲這種做法一直讓我的頭不疼)這應該工作:

Select 
idProject 
from 
delivery 

group by 
idProject 
having 

count (case when idProvider = 1 then 1 else null end) = 1 
and count (idProvider) = 1