2012-10-15 12 views
5

Ho un incarico da parte mia di costruire un sistema di presenza che sto facendo bene ma sono bloccato in un posto. Quando contiamo le foglie, se una persona prende un congedo il venerdì e poi si congeda di nuovo il lunedì, allora anche il sabato tra sabato e domenica dovrebbe contare come foglie.Seleziona solo venerdì e lunedì prossimo in mysql

sono stato in grado di estrarre solo i venerdì e il lunedì dalla mia tabella seguente query:

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

ma non so come selezionare il Venerdì e il prossimo Lunedi solo quindi so che la persona era in ferie il venerdì e il lunedì.

Qualsiasi aiuto sarebbe apprezzato.

+1

può si prega di inviare i vostri dati fittizi in modo che possiamo testare? –

+0

Nella tabella sono presenti i seguenti campi: data, numero dipendente e stato dipendente. –

risposta

5

Questo vi darà tutte le "foglie", che si estendono su un Venerdì e il seguente Lunedi:

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

ma dà solo i record che sono venerdì. –

+1

@JewelThief: Non dovrebbe fare ... tuttavia i nomi delle colonne si scontrano, quindi il tuo cliente potrebbe non essere in grado di accedere alle colonne del lunedì. Puoi definirli alias, ad es. con 'SELECT fri.emp_no, fri.DATE AS venerdì, lun.DATE AS lunedì da ...' – eggyal

+0

Grazie a @eggyal. Hai davvero risolto il mio problema. La tua richiesta è corretta. Stavo facendo un errore nel gestirlo. –