Angesichts der beiden Tabellen „reservation“ und „reservation_log“, in denen „reservation“ allgemeine Reservierungsinformationen enthält und „reservation_log“ Änderungen an Reservierungen (einschließlich Stornierungen) verfolgt, ist die Aufgabe besteht darin, Reservierungen zu extrahieren, die nicht storniert wurden. Eine einfache WHERE-Klausel eignet sich effektiv zum Identifizieren stornierter Reservierungen, reicht jedoch bei der Suche nach nicht stornierten Datensätzen nicht aus.
Glücklicherweise können zwei Ansätze verwendet werden, um diese Aufgabe zu erfüllen:
Diese Methode nutzt die NOT IN-Klausel, um Reservierungen mit entsprechender Stornierung auszuschließen Datensätze.
SELECT * FROM reservation WHERE id NOT IN ( SELECT reservation_id FROM reservation_log WHERE change_type = 'cancel' );
Ein alternativer Ansatz ist die Verwendung einer LEFT JOIN-Operation. Der Left Join ruft alle Zeilen aus der Reservierungstabelle ab und schließt entsprechende Zeilen aus der Tabelle „reservation_log“ ein, sofern vorhanden. Zeilen ohne übereinstimmende Stornierungsdatensätze haben NULL-Werte in den Spalten „reservation_log“. Die WHERE-Klausel kann diese Zeilen dann herausfiltern.
SELECT r.* FROM reservation r LEFT JOIN reservation_log l ON r.id = l.reservation_id AND l.change_type = 'cancel' WHERE l.id IS NULL;
Das obige ist der detaillierte Inhalt vonWie rufe ich nicht stornierte Reservierungsdatensätze aus einer Datenbank ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!