2012-10-15 2 views
5

Ich habe Aufgabe auf meiner Hand zu bauen ein Anwesenheitssystem, das ich in Ordnung bin, aber ich bin an einem Ort fest. Zählt man die Blätter, wenn sich eine Person am Freitag verabschiedet und dann am Montag wieder abfährt, dann sollten die zwischen Samstag und Sonntag als Blätter zählen.Wählen Sie nur Freitag und kommenden Montag in Mysql

konnte ich nur die freitags und montags von meinem Tisch extrahieren durch Abfrage folgende:

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

aber ich weiß nicht, wie die Freitag und am nächsten Montag wählen nur damit ich weiß, dass die Person am Freitag sowie am Montag in Urlaub war.

Jede Hilfe wäre willkommen.

+1

können Sie bitte Ihre Dummy-Daten veröffentlichen, damit wir prüfen können? –

+0

Meine Tabelle enthält folgende Felder: Datum, Mitarbeiternummer und Angestelltenstatus. –

Antwort

5

Dies gibt Ihnen alle „Blätter“, die einen Freitag und am folgenden Montag umspannen:

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

aber es gibt nur die Aufzeichnungen, die freitags sind. –

+1

@JewelThief: Es sollte nicht ... aber die Spaltennamen kollidieren, sodass Ihr Client möglicherweise nicht auf die Montag-Spalten zugreifen kann. Sie können sie z.B. mit 'SELECT fri.emp_no, fri.DATE AS Freitag, MONDATE AS Montag FROM ...' – eggyal

+0

Danke @eggyal. Du hast mein Problem wirklich gelöst. Ihre Anfrage ist korrekt. Ich habe einen Fehler gemacht. –