überlappt Ich habe folgende MySQL-Tabelle (Zimmer)Wie der Rest zwischen Datumsbereiche zu finden, die
id_user_room username room_name date_from date_to 1 mike A1 2017-02-01 2017-02-10 2 evans A2 2017-01-20 2017-01-30 3 mike A3 2017-02-16 2017-02-20 4 mike A1 2017-03-01 2017-03-18
Wenn ich das Zimmer von Mike zwischen 2017.01.01 und 2017.05.30 wissen wollen , Führe ich die folgende SQL-Abfrage aus.
SELECT room_name, date_from, date_to
FROM rooms
WHERE (date_to >= '2017-01-01' AND date_from <= '2017-05-30')
AND username='Mike'
order by date_to ASC
Diese Abfrage ergibt folgendes Ergebnis:
room_name date_from date_to A1 2017-02-01 2017-02-10 A3 2017-02-16 2017-02-20 A1 2017-03-01 2017-03-18
Gibt es eine Möglichkeit, die Ruhe (gegenüber) Datumsbereiche zu bekommen? Ich meine, ich würde gerne die Bereiche kennen, in denen Mike nicht in einem Raum lebte. Für das spezifische Beispiel würde das Ergebnis, das ich erhalten möchte, die folgenden Zeiträume sein:
Vielen Dank für Ihre Hilfe !!!
Warum nicht in Ihrem PHP? –
Wie man es mit PHP macht, hast du eine Idee? – George
Erstellen Sie eine Tabelle mit allen Datumsangaben in einem Jahr, machen Sie dann Linksverbindungen, um Daten zu finden, und suchen Sie dann im Ergebnis Unterbrechungen mit einem Self-Join auf dem Ergebnis. Messy, but creative :) – ceteras