我想搜索一个表的所有活动记录,并在第二个表中查找它们各自的数据,并且如果找不到任何内容,则返回0
这是我的例子。
SELECT employee.id, count(jobs.id)
FROM employee LEFT OUTER JOIN jobs ON employee.id = jobs.employee_id
where employee.state ='active' and jobs.startdatetime >= date(now())
group by employee.id
如果我不执行startdatetime范围,它将返回正确的行数
如果我添加startdatetime范围,所有没有工作的员工都会被丢弃
最佳答案
如前所述,将条件jobs.startdatetime >= date(now())
作为连接条件移到您的JOIN
子句中,就像
SELECT employee.id,
count(jobs.id) as job_count
FROM employee
LEFT OUTER JOIN jobs ON employee.id = jobs.employee_id
AND jobs.startdatetime >= date(now())
where employee.state ='active'
group by employee.id;