Heim > Datenbank > MySQL-Tutorial > Wie kann ich nicht stornierte Reservierungen von zwei Tischen effizient abrufen?

Wie kann ich nicht stornierte Reservierungen von zwei Tischen effizient abrufen?

Susan Sarandon
Freigeben: 2025-01-23 19:53:21
Original
446 Leute haben es durchsucht

Eine effektive Methode, um nicht stornierte Reservierungen effizient abzurufen

In diesem Artikel wird erläutert, wie Informationen zu nicht stornierten Reservierungen effizient aus zwei Tabellen (Reservierungstabelle und Reservierungsprotokolltabelle) abgerufen werden können. In der Reservierungstabelle werden Reservierungsdetails gespeichert und in der Reservierungsprotokolltabelle werden Reservierungsänderungen aufgezeichnet.

Eine Möglichkeit besteht darin, zunächst stornierte Reservierungen auszuwählen und sie aus den Ergebnissen auszuschließen. Diese Methode erfordert jedoch zusätzliche Verbindungen zur Abonnementprotokolltabelle, um gekündigte Abonnements abzurufen, was weniger effizient ist.

Eine effizientere Lösung ist die Verwendung der NOT IN-Klausel in einer Unterabfrage:

SELECT *
FROM reservation
WHERE id NOT IN (select reservation_id
                 FROM reservation_log
                 WHERE change_type = 'cancel');
Nach dem Login kopieren

Diese Abfrage ruft alle Zeilen in der Tabelle reservation ab, in denen die Spalte id nicht im Ergebnis der Unterabfrage enthalten ist. Die Unterabfrage wählt die reservation_log-Werte in der change_type-Tabelle aus, wobei das reservation_id „Abbrechen“ lautet.

Eine andere Möglichkeit besteht darin, die Klauseln LEFT JOIN und WHERE zu verwenden:

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;
Nach dem Login kopieren

Diese Abfrage verwendet LEFT JOIN, um alle Zeilen in der Tabelle reservation einzuschließen, unabhängig davon, ob sie übereinstimmende Zeilen in der Tabelle reservation_log haben. Die WHERE l.id IS NULL-Klausel filtert alle Zeilen in der reservation_log-Tabelle heraus, in denen eine passende Zeile von change_type='cancel' vorhanden ist, sodass nur nicht stornierte Reservierungen übrig bleiben.

How to Efficiently Retrieve Uncancelled Reservations from Two Tables?

Das obige ist der detaillierte Inhalt vonWie kann ich nicht stornierte Reservierungen von zwei Tischen effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage