MySQL查询考勤登记

时间:2020-09-08 07:32:01

标签: mysql

我正在计划导出出勤记录的数据,数据来自这两个数据库:

用户:

+----+--------+---------+
| id | name   | surname |
+----+--------+---------+
| 1  | george | shish   |
| 2  | frank  | matano  |   
| 3  | test   | test    |
+----+--------+---------+

报告人

+-----------+---------------+------------+
| id_report | id_employee   | date       |
+-----------+---------------+------------+
| 1         | 1             | 07-09-2020 |
| 2         | 2             | 07-09-2020 |
| 3         | 2             | 06-09-2020 |
| 4         | 1             | 06-09-2020 |
+-----------+---------------+------------+

使用该query

SELECT id,id_employee,name,surname,GROUP_CONCAT(date) 
FROM users as u 
JOIN reportdipendente as r  
    ON u.id=r.id_employee  
WHERE r.date LIKE ? 
GROUP BY id

mysql返回:

+----+-------------+--------+---------+-----------------------+
| id | id_employee | name   | surname | date                  |
+----+-------------+--------+---------+-----------------------+
| 1  | 1           | george | shish   | 06-09-2020,07-09-2020 |
| 2  | 2           | frank  | matano  | 06-09-2020,07-09-2020 |
+----+-------------+--------+---------+-----------------------+

一切都还好,但是我怎么也可以打印用户nr 3?因为他在第二db

中没有任何记录

其他详细信息:

    我和param ex一样使用。 '%09-2020%'
  1. 日期是varchar

1 个答案:

答案 0 :(得分:1)

SELECT u.id, 
       COALESCE(ANY_VALUE(r.id_employee), '') id_employee, 
       u.name, 
       u.surname, 
       COALESCE(GROUP_CONCAT(r.date), '') date
FROM users as u 
LEFT JOIN reportdipendente as r  
     ON u.id=r.id_employee  
    AND r.date LIKE ? 
GROUP BY u.id, 
         u.name, 
         u.surname