Как получить подмножество таблицы с помощью оператора count - PullRequest
0 голосов
/ 04 марта 2019

SQL Server 2012.

На каждом предприятии есть одна или несколько команд.У каждой команды могут быть спонсоры или спонсоры.

Enterprise

Id    Name
1      A
2      B
3      C

и таблица команды:

Team

Id    Name    EnterpiseId
1      For         1
2      Xor         2
3      Nor         2
4      Xur         1
5      Fir         3
6      Fte         2

и теперь спонсор таблицы

Sponsor

id     Name    TeamId
1      XX1        1
2      FC7        1
3      89U        3

Теперь мне нужно знать, как представить эту таблицу, которая показывает толькопредприятия, у которых есть хотя бы один спонсор.

FINAL TABLE

Id    Name
1      A
3      C

На предприятии B есть 3 команды, но нет спонсоров для этих 3 команд, поэтому я хочу показать предприятия, у которых есть спонсоры "А"и "С".

Select A.id, A.name
FROM Enterprise A
LEFT JOIN Team B on A.Id=b.EnterpriseId
INNER JOIN Sponsor C on B.Id=C.TeamId
Where (SELECT COUNT(*) FROM Sponsor S INNER JOIN Team T on T.id=S.TeamId group by T.id)>0

Это не работает.Я не привык использовать подмножества, которые, вероятно, способ достижения желаемой таблицы.Благодаря.

1 Ответ

0 голосов
/ 04 марта 2019

Вы можете сделать это с JOIN с.GROUP BY только для устранения дубликатов:

SELECT e.id, e.name
FROM Enterprise e JOIN
     Team t
     ON e.Id = t.EnterpriseId JOIN
     Sponsor s
     ON t.Id = s.TeamId
GROUP BY e.id, e.name;

JOIN соответствует только командам, у которых есть спонсоры.

Если вы искали более одного, то что-то вроде HAVING COUNT(*) > 1 будет вызвано.

...