列出名字和姓氏以及它们拥有的属性的数量。
还需要包括不拥有任何财产但计数为0的工作人员。
在这里,我的工作人员和财产与staffNo。相关。
此查询仅显示拥有物业的员工及其拥有的人数,但不显示不拥有任何物业的员工
SELECT S.branchNo
, fName
, lName
, S.staffNo
, COUNT(*) AS "count"
FROM Staff S
, PropertyForRent P
WHERE S.staffNo = P.staffNo
GROUP
BY S.branchNo
, S.staffNo
ORDER
BY S.staffNo;
答案 0 :(得分:1)
如果您需要包括没有财产的工作人员,请考虑left join
。你知道那是什么吗您正在使用隐式连接。您需要学习正确的,明确的标准 join
语法。它功能更强大,并且可以满足您的要求。
SELECT s.fName, s.lName, COUNT(P.staffNo) AS "count
FROM Staff S LEFT JOIN
PropertyForRent P
ON S.staffNo = P.staffNo
GROUP BY fName, lName
ORDER BY S.staffNo;
您不应在SELECT
中包括多余的列。如果您需要人员编号或其他列,请将其包括在GROUP BY
中。
答案 1 :(得分:1)
Staff
表为最左边的表)。这样就可以产生Staff
表的所有行(即使PropertyForRent
表中没有匹配的条目)使用以下查询:
SELECT S.branchNo, fName, lName, S.staffNo,
IFNULL(COUNT(*),0) AS "count"
FROM Staff S
LEFT JOIN PropertyForRent P ON S.staffNo = P.staffNo
GROUP BY S.branchNo, S.staffNo
ORDER BY S.staffNo