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个团队没有赞助商,所以我想展示拥有赞助商的企业,即"A“和"C”。
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这不管用。我不习惯使用子集,这可能是实现所需表格的方法。谢谢。
发布于 2019-03-04 08:51:29
您可以使用JOINs来完成此操作。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的代码。
https://stackoverflow.com/questions/54975219
复制相似问题