5

我的任务是建立一个考勤系统,我做得很好,但我被困在一个地方。在计算树叶时,如果一个人在星期五请假,然后在星期一再次请假,那么周六和周日之间的时间也应该算作请假。

通过以下查询,我只能从表中提取星期五和星期一:

SELECT * FROM  `main` WHERE (DAYOFWEEK( DATE ) =2 OR DAYOFWEEK( DATE ) =6 ) 
AND emp_no =4 AND STATUS ='leave' ORDER BY DATE ASC 

但我不知道如何选择周五和下周一所以我知道这个人周五和周一都在休假。

任何帮助,将不胜感激。

4

1 回答 1

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'
于 2012-10-15T10:44:05.290 回答