繁体   English   中英

SQL select 查询根据列值从两个外键表中获取唯一条目的总数

[英]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收集来自UserMember的团队 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM