mysql SUM left join force show results with sum of 0 零结果

标签 mysql left-join

所以我现在为此苦苦挣扎了一段时间。

员工只需在表 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 

http://sqlfiddle.com/#!9/d89534/1

最佳答案

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

这里要注意的是,由于您是通过日期进行过滤,因此空列将被过滤掉。 检查 where 子句

关于mysql SUM left join force show results with sum of 0 零结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45346559/

相关文章:

php - 存储图像然后显示它们的最佳方式

mysql - 加速通过 Select 语句循环的 SQL 更新语句

python - 将python pickled对象存储到mysql + django中

php - mysqli 是否存在限制使其不适合与 AMP 或 ReactPHP 一起使用?

MYSQL Left Join on multiple table 但只选择最近的行

sql - 如何使用连接执行 AND?

mysql - 具有多个 postmeta 左连接的 Wordpress 自定义 SQL 查询

MySQL Where on Multiple Left Join Rows

php - Laravel 中批量分配的风险

mysql - 在 mysql 中使用 datediff() 优化查询