[英]SQL select query to get total unique entries from two foreign key tables based on a column value
我有三个表,如下所示 - 理想情况下它不会像这样布置,但目前没有权力改变它。
Team User Member ID | Name ID | TeamId | Email ID | TeamId | Email ---------- 1 | Team A 1 | 1 | a@email.com 1 | 1 | a@email.com 2 | Team B 2 | 1 | b@email.com 2 | 1 | b@email.com 3 | Team C 3 | 1 | c@email.com
我需要能够根据他们的 email 地址唯一地获得每个团队中用户和成员的总和。 例如,团队 A 的成员和用户组合的唯一计数为 3。
对于每个 email,一个条目可能存在于用户表或成员表中,也可能同时存在于两者中。 查询的结果将是 TeamName 和 TotalUsers。
任何有关此类查询的帮助将不胜感激。
使用UNION
收集来自User
和Member
的团队 ID 和电子邮件的所有不同组合,并将Team
LEFT
连接到该结果集并聚合:
SELECT t.id, t.name, COUNT(email) count FROM Team t LEFT JOIN ( SELECT teamid, email FROM User UNION SELECT teamid, email FROM Member ) e ON e.teamid = t.id GROUP BY t.id;
您可以UNION
成员和 User 表,以便删除重复项
然后将它加入到 temas 表中
SELECT t1.Name, COUNT(DISTINCT Email) FROM Team t1 JOIN ( SELECT TeamId, Email FROM User UNION SELECT TeamId, Email FROM Member) t2 ON t2.TeamId = t1.ID GROUP BY t1.Name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.