我有以下两个表(针对此问题进行了简化):
CREATE TABLE team (
teamID CHAR(6) NOT NULL PRIMARY KEY);
CREATE TABLE member (
memberID CHAR(7) NOT NULL PRIMARY KEY,
teamID CHAR(6) NOT NULL REFERENCES team(teamID) );
Run Code Online (Sandbox Code Playgroud)
我还有以下查询,即列出每个团队中的成员数量:
SELECT teamID, count(memberID) AS [noOfMembers]
FROM member
GROUP by teamID;
Run Code Online (Sandbox Code Playgroud)
但是,我有四个团队(MRT1,MRT2,MRT3和MRT4).我的表中的成员只属于第2组和第3组,因此当我运行查询时,我得到以下输出:
MRT2:7,MRT3:14
我不确定如何调整查询以列出所有4个团队:
MRT1:0,MRT2:7,MRT3:14,MRT4:0
我一直在搞乱子查询来解决这个问题而没有任何运气.有任何想法吗?谢谢
尝试从TEAM中选择离开JOIN-ing会员
SELECT Team.Teamid, count(memberid)
FROM
TEAM
LEFT OUTER JOIN
Member on Member.teamid = Team.Teamid
GROUP by Team.Teamid
Run Code Online (Sandbox Code Playgroud)
只是为了给你一些背景知道这是做什么的.
它说
给我团队中的所有团队成员,然后为每个人计算成员表中的匹配,即使没有匹配.
如果你使用
SELECT Team.Teamid, count(memberid)
FROM
TEAM
INNER JOIN
Member on Member.teamid = Team.Teamid
GROUP by Team.Teamid
Run Code Online (Sandbox Code Playgroud)
这转化为
从团队中给我所有的团队成员,然后为每个团队成员计算成员表中的匹配项,但前提是有匹配项.
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |