[英]get records from database of all days of given month and year and blank if not available in database
我正在尝试从员工出勤表中获取记录。 我想获取给定月份和年份的所有日期记录。 如果当天没有可用的记录,则它将仅显示日期,而其他字段将为空白。 下表如下:
Table: emp_attendance
id emp_id attendance_date attendance reason
1 1 2014-08-01 P
2 1 2014-08-02 A seek
.
.
.
26 1 2014-08-26 P
在给定的表格中,假设没有某些特定日期的记录,例如2014-08-27、2014-08-28、2014-08-29、2014-08-30、2014-08-31。
因此,我如何获得2014年8月的记录,如下所示。
Expected Result Would Be:
date id emp_id attendance reason
2014-08-01 1 1 P
2014-08-02 2 1 A seek
.
.
.
2014-08-26 26 1 P
2014-08-27 NULL NULL NULL NULL
2014-08-28 NULL NULL NULL NULL
2014-08-29 NULL NULL NULL NULL
2014-08-30 NULL NULL NULL NULL
2014-08-31 NULL NULL NULL NULL
您需要创建一个表,其中包含当月的所有日期。 那你可以做
SELECT d.date, a.*
FROM dates AS d -- This is the table with all days
LEFT JOIN emp_attendance AS a ON d.date = a.attendance_date
ORDER BY d.date
如果您的dates
表仅包含日期而不是完整日期,则可以执行以下操作:
SELECT d.date, a.*
FROM dates AS d -- This is the table with all days
LEFT JOIN emp_attendance AS a ON d.date = DAY(a.attendance_date)
AND YEAR(a.attendance_date) = 2014 AND MONTH(a.attendance_date) = 8
ORDER BY d.date
试试下面的代码:
SELECT * FROM emp_attendance WHERE YEAR(attendance_date)='2014'and MONTH(attendance_date)='8'ORDER BY出席时间
如果您需要再添加一个条件,则还可以添加(AND出勤为空AND原因为空)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.