2012-10-15 11 views
5

Mam zlecenie na ręce zbudowania systemu obecności, który robię dobrze, ale utknąłem w jednym miejscu. Podczas liczenia liści, jeśli dana osoba bierze urlop w piątek, a następnie ponownie przyjmuje urlop w poniedziałek, to między sobotą a niedzielą należy również liczyć się jako liście.Tylko wybierz piątek i następny poniedziałek w mysql

udało mi się wyodrębnić tylko w piątki i poniedziałki od mojego stolika przez następujące zapytanie:

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

ale nie wiem jak wybrać piątek i kolejny poniedziałek tylko więc wiem że osoba była na urlopie w piątek, a także w poniedziałek.

Każda pomoc zostanie doceniona.

+1

można proszę zamieścić swoje fikcyjne dane, dzięki czemu możemy przetestować? –

+0

Moja tabela zawiera następujące pola: datę, numer pracownika i status pracownika. –

Odpowiedz

5

To daje wszystkie „liście”, które rozciągają się w piątek i następujący Poniedziałek:

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' 
+0

, ale podaje tylko rekordy w piątki. –

+1

@JewelThief: Nie powinno się robić ... jednak nazwy kolumn są zderzające się, więc Twój klient może nie mieć dostępu do poniedziałkowych kolumn. Możesz je aliasować np. z 'SELECT fri.emp_no, fri.DATE JAK Piątek, mon.DATE AS poniedziałek OD ...' – eggyal

+0

Dzięki @eggyal. Naprawdę rozwiązałeś mój problem. Zapytanie jest poprawne. Robiłem błąd w prowadzeniu tego. –