【发布时间】:2018-07-08 19:42:44
【问题描述】:
我有 3 个示例表: 1. 人
PID PNAME
----------- ------------------------------
111111111. James Brock
222222222. Dean Sampson
333333333. Adam Klein
444444444. Sam Toggle
-
公司
CID CNAME
- A公司
- 公司B
- C公司
- D公司
-
工作
PID CNAME
- 公司B
- A公司
- A公司
- C公司
我想显示每家公司的员工人数,包括那些没有任何员工的员工(即:0 人)
所以到目前为止我有这个:
SELECT CNAME, COUNT(*) as EMPLOYEES
FROM PERSON P, WORKING W, COMPANY C
WHERE P.PID = W.PID
AND W.CNAME = C.CNAME
GROUP BY CNAME;
返回:
CNAME EMPLOYEES
----------- ------------------------------
Company A 2
Company B 1
Company C 1
请注意,D 公司不见了
我想要这个:
CNAME EMPLOYEES
----------- ------------------------------
Company A 2
Company B 1
Company C 1
Company D 0
有没有我可以采取的方法来获得我想要的结果?我在网上找到的所有其他示例仅使用 2 个表进行匹配。
【问题讨论】:
-
工作中的 PID 与实际的不对应。工作表将不包含 cname,而是包含 cid。只有这样你才需要加入三个表。
标签: sql database db2 aggregate-functions