我希望获得用户表的所有记录,但是查询只返回两个表中匹配的记录。我正在显示当月出勤表中是否存在用户出勤的当月用户出勤率。
SELECT MAX(a1.attendance_id) atid,
a1.attendance_user_id,
CONCAT(u1.user_firstname, ' ', u1.user_lastname) user_name,
YEAR(attendance_date) at_year,
MONTH(attendance_date) at_month,
GROUP_CONCAT(DAY(attendance_date ) ORDER BY attendance_date) at_date,
GROUP_CONCAT(attendance_type ORDER BY attendance_date) at_type
FROM user u1 LEFT JOIN attendance a1 ON u1.user_id = a1.attendance_user_id
WHERE u1.user_status = 'Active' AND DATE(a1.attendance_date)
BETWEEN DATE_FORMAT(NOW() ,'%Y-%m-01') AND CURDATE()
GROUP BY a1.attendance_user_id, YEAR(attendance_date), MONTH(attendance_date) ORDER BY atid DESC limit 0, 25
答案 0 :(得分:0)
您需要在DATE(a1.attendance_date) BETWEEN DATE_FORMAT(NOW() ,'%Y-%m-01') AND CURDATE()
中加入ON Clause
条件
SELECT
MAX(a1.attendance_id) atid,
a1.attendance_user_id,
CONCAT(u1.user_firstname, ' ', u1.user_lastname) user_name,
YEAR(attendance_date) at_year,
MONTH(attendance_date) at_month,
GROUP_CONCAT(DAY(attendance_date ) ORDER BY attendance_date) at_date,
GROUP_CONCAT(attendance_type ORDER BY attendance_date) at_type
FROM user u1 LEFT JOIN attendance a1 ON u1.user_id = a1.attendance_user_id
AND DATE(a1.attendance_date) BETWEEN DATE_FORMAT(NOW() ,'%Y-%m-01') AND CURDATE()
WHERE u1.user_status = 'Active'
GROUP BY a1.attendance_user_id, YEAR(attendance_date), MONTH(attendance_date)
ORDER BY atid DESC limit 0, 25