2014-02-12 3 views
-1

Не могли бы вы помочь мне построить SELECT с помощью SQL?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 
Смежные вопросы