Mysql SUM left join force显示结果和为0的结果

Mysql SUM left join force显示结果和为0的结果,mysql,left-join,Mysql,Left Join,所以我现在正在为此奋斗一段时间 员工只需在表clocktimes 我只想要所有员工的结果,包括在该日期间隔内的零(未显示的员工)。我还尝试使用COALESCE,但没有达到预期的效果 regular字段是以单位表示的时间量,例如:3.5 我的问题是显示结果为0(零)的任务,该任务中不存在小时数 使用的查询: SELECT employees.employeeid, employees.emp_external_id, employees.status_id, employees.firstname

所以我现在正在为此奋斗一段时间

员工只需在表
clocktimes

我只想要所有员工的结果,包括在该日期间隔内的零(未显示的员工)。我还尝试使用COALESCE,但没有达到预期的效果

regular
字段是以单位表示的时间量,例如:3.5

我的问题是显示结果为0(零)的任务,该任务中不存在小时数

使用的查询:

SELECT
employees.employeeid,
employees.emp_external_id,
employees.status_id,
employees.firstname,
employees.middlename,
employees.lastname,
IFNULL(SUM(clocktimes.Regular), 0) AS sumoftime
FROM
employees
LEFT JOIN clocktimes ON employees.emp_external_id  = clocktimes.EmployeeGUID
WHERE
employees.status_id <> 3 AND
date(clocktimes.StartDate) BETWEEN '2017-07-01' AND '2017-07-15'
GROUP BY
employees.employeeid
ORDER BY
employees.firstname ASC 
选择
employeeid,
employees.emp_external_id,
employees.status\u id,
雇员的名字,
雇员,中间名,
employees.lastname,
IFNULL(总和(clocktimes.Regular),0)作为sumoftime
从…起
员工
LEFT JOIN clocktimes ON employees.emp\u external\u id=clocktimes.EmployeeGUID
哪里
employees.status_id 3和
日期(clocktimes.StartDate)介于“2017-07-01”和“2017-07-15”之间
分组
employeeid.employeeid
订购人
employees.firstname ASC

选择
employeeid,
employees.emp_external_id,
employees.status\u id,
雇员的名字,
雇员,中间名,
employees.lastname,
IFNULL(总和(clocktimes.Regular),0)作为sumoftime
从…起
员工
LEFT JOIN clocktimes ON employees.emp\u external\u id=clocktimes.EmployeeGUID
哪里
employees.status_id 3和
(日期(clocktimes.StartDate)介于“2017-07-01”和“2017-07-15”之间)或日期(clocktimes.StartDate)为空)
分组
employeeid.employeeid
订购人
employees.firstname ASC

这里的haaping是,因为您是通过日期过滤的,所以空列被过滤掉检查where子句

请发布示例数据,同时发布完整代码,这将失败,因为多个字段不在聚合函数中,并且没有分组。请参阅:Done SqlFIDLE,在工作示例中“Aalbers Babu”应返回0小时,这是我的目标。是的,我知道“where子句”日期限制了结果。我只想把“缺席”的也包括在内。我正在按照建议构建SQLFIDLE。您看到我在where子句中所做的更改了吗?对不起!您的响应解决了问题(缺少一个“(”),但它可以工作。TY。
SELECT
employees.employeeid, 
employees.emp_external_id,
employees.status_id,
employees.firstname,
employees.middlename,
employees.lastname, 
IFNULL(SUM(clocktimes.Regular), 0) AS sumoftime
FROM
employees
LEFT JOIN clocktimes ON employees.emp_external_id = clocktimes.EmployeeGUID
WHERE
employees.status_id <> 3 AND
(date(clocktimes.StartDate) BETWEEN '2017-07-01' AND '2017-07-15') or date(clocktimes.StartDate) is null )
GROUP BY
employees.employeeid
ORDER BY
employees.firstname ASC