Mysql 列出每位工作人员处理的财产数量

Mysql 列出每位工作人员处理的财产数量,mysql,sql,Mysql,Sql,列出他们的名字和姓氏以及拥有的财产数量 还需要包括不拥有任何财产但计数为0的员工 这里我有与staffNo有关的员工和财产 此查询仅显示拥有某个属性的员工及其拥有的人数,而不显示不拥有任何属性的员工 SELECT S.branchNo , fName , lName , S.staffNo , COUNT(*) AS "count" FROM Staff S , PropertyForRent P WHERE S.staffNo = P

列出他们的名字和姓氏以及拥有的财产数量

还需要包括不拥有任何财产但计数为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;

如果您需要包括没有属性的工作人员,请考虑
左加入
。你知道那是什么吗?您正在使用隐式联接。您需要学习正确、明确、标准的
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;

您不应该在
选择中包含无关的列。如果您想要员工编号或其他列,则还应将其包括在
分组依据中

如果您需要包括没有属性的员工,请考虑
左加入
。你知道那是什么吗?您正在使用隐式联接。您需要学习正确、明确、标准的
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;
您不应该在
选择中包含无关的列。如果您需要员工编号或其他列,则还应将其包括在
分组中,并按

  • 不要使用隐式联接
  • 要获取不带任何属性的所有staff-members、event,您需要使用(最左边的表是
    staff
    table)。这允许
    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
  • 不要使用隐式联接
  • 要获取不带任何属性的所有staff-members、event,您需要使用(最左边的表是
    staff
    table)。这允许
    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

远离隐式连接远离隐式连接