新手。下面的代码很好地返回了我想要的结果。唯一的问题是,我不知道如何只返回一个特定的日期范围(在checkdate列中找到)。我可以让它按检查日期筛选的唯一方法是按empchecks分组。checkdate和使用HAVING checkdate>=whatever。但是我必须按员工分组。enum。我肯定我漏掉了一些简单的东西。
SELECT employee_data.a,
employees_data.b, employee_data.c,
GROUP_CONCAT(empchecks.d
ORDER BY empchecks.checkdate
SEPARATOR '<br /> ')
AS checknum,
GROUP_CONCAT(empchecks.checkdate
ORDER BY empchecks.checkdate
SEPARATOR '<br /> ')
AS checkdate,
FROM employees
INNER JOIN empchecks ON employees.enum = empchecks.enum
GROUP BY empchecks.enum
您需要添加WHERE子句。还有一个小更正- AS checkdate
后面的最后一个逗号不应该在那里。
SELECT employee_data.a, employees_data.b, employee_data.c,
GROUP_CONCAT(empchecks.d ORDER BY empchecks.checkdate SEPARATOR '<br /> ') as checknum,
GROUP_CONCAT(empchecks.checkdate ORDER BY empchecks.checkdate SEPARATOR '<br /> ') as checkdate
FROM employees
INNER JOIN empchecks
ON employees.enum = empchecks.enum
WHERE empchecks.checkdate >= @begin_date
AND empchecks.checkdate <= @end_date
GROUP BY empchecks.enum;