2016-07-13 5 views
1

Ich habe eine MySQL-Tabelle mit dem Namen 'helper_leaves', in dem Benutzer ihre Urlaubstermine für die nächsten 2 Monate eingegeben haben.MySql - Holen Sie sich das nächste Datum, das eine Bedingung erfüllen

Ich mag 2 bevorstehende Arbeitsdaten erhalten für ein bestimmtes user_id die NICHT in dem ‚helper_leaves‘ Tisch und sollte auch auf das aktuelle Datum als nächste.

**id | user_id | leave_date** 

1 | 1  | 2016-07-07 
2 | 1  | 2016-07-09 
3 | 1  | 2016-07-15 
4 | 1  | 2016-08-03 

Ich möchte eine Abfrage schreiben, um die nächsten 2 Arbeitsdaten von user_id = 1, ab sofort zu bekommen. Bitte beachten Sie, diese Tabelle hat nur die Urlaub Daten. Aber ich möchte die nächsten 2 Verfügbarkeitsdaten bekommen.

Für die Beispieldaten gegeben, erwartete ich 2016.07.14 und 2016.07.16 als die nächsten 2 Arbeitsdaten zu erhalten, weil heute 2016-07-13

ist Hinweis: Alle Daten, die nicht in dieser Tabelle enthalten sind, gelten als Arbeitsdatum.

Bitte helfen Sie !!!!

+0

Sie wollen den Urlaubstermin zu bekommen? Ich sehe keine Arbeitsdatumsspalte? Oder willst du wo nicht in der Tabelle kommen? – Kisaragi

+0

Es ist unklar, was Sie hier sind, angesichts der Beispieldaten, was ist Ihre gewünschte Ausgabe? –

+0

Bearbeitete die Frage !!! –

Antwort

2

Können Sie bitte versuchen Sie es mit folgenden Abfrage? Darin haben generieren ich gerade nächsten 60 Tage, und verstehen sich inklusive leave_date aus, dass mit Limit 2.

SELECT CURDATE() + INTERVAL a + b DAY dte 
FROM 
(SELECT 0 a UNION SELECT 1 a UNION SELECT 2 UNION SELECT 3 
    UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 
    UNION SELECT 8 UNION SELECT 9) d, 
(SELECT 0 b UNION SELECT 10 UNION SELECT 20 
    UNION SELECT 30 UNION SELECT 40) m 
WHERE CURDATE() + INTERVAL a + b DAY < DATE_ADD(CURDATE(),INTERVAL 60 DAY) and dte not in (select leave_date from helper_leaves where user_id = 1) 
ORDER BY a + b limit 2 
+0

Das funktioniert :) –

0

Hierfür können Sie Intervall verwenden

Für Ex:

SELECT DATE_ADD(leave_date, INTERVAL 1 DAY) AS workingDay; 
+0

Entschuldigung, dies wird nur das Urlaubsdatum erhalten. Ich möchte das nächste Verfügbarkeitsdatum dieses Benutzers abfragen. –

+0

Nein, dies wird den Tag +1 tatsächlich zum leave_date hinzufügen !! – Kunal

+0

Ja, aber das kann ein weiterer Urlaubstag sein. Ich möchte immer das Verfügbarkeitsdatum erhalten, auch das neben dem aktuellen Datum. –

Verwandte Themen