我手上有一个建立考勤系统的任务,我做得很好,但我被困在一个地方。在计算叶子时,如果一个人在星期五休假,然后在星期一再次休假,那么星期六和星期日之间也应该算作叶子。
我已经能够通过以下查询从我的表中仅提取星期五和星期一:
SELECT * FROM `main` WHERE (DAYOFWEEK( DATE ) =2 OR DAYOFWEEK( DATE ) =6 )
AND emp_no =4 AND STATUS ='leave' ORDER BY DATE ASC
但我不知道如何选择星期五和下周一 所以我知道这个人在星期五和星期一休假。
任何帮助都将不胜感激。
答案 0 :(得分:5)
这将为您提供跨越星期五和随后星期一的所有“假期”:
SELECT *
FROM main fri JOIN main mon
ON fri.DAYOFWEEK(DATE)=6
AND mon.DATE = fri.DATE + INTERVAL 3 DAY
AND fri.emp_no = mon.emp_no
WHERE fri.STATUS='leave' AND mon.STATUS='leave'