Heim > Datenbank > MySQL-Tutorial > Wie rufe ich nicht stornierte Reservierungen aus einer Datenbank mit Reservierungsprotokollen ab?

Wie rufe ich nicht stornierte Reservierungen aus einer Datenbank mit Reservierungsprotokollen ab?

Linda Hamilton
Freigeben: 2025-01-23 19:37:09
Original
528 Leute haben es durchsucht

How to Retrieve Uncancelled Reservations from a Database with Reservation Logs?

Aktive Reservierungen in einer Datenbank identifizieren

In diesem Artikel werden zwei SQL-Abfragemethoden zum Abrufen nicht stornierter Reservierungen aus einer Datenbank mit den Tabellen reservation und reservation_log demonstriert. Eine Reservierung gilt nur dann als storniert, wenn in der Tabelle change_type = 'cancel' ein entsprechender Eintrag mit reservation_log vorhanden ist.

Methode 1: NOT IN Unterabfrage

Dieser Ansatz verwendet eine Unterabfrage, um stornierte Reservierungen zu identifizieren und schließt sie dann aus den Ergebnissen der Hauptabfrage aus:

<code class="language-sql">SELECT *
FROM reservation
WHERE id NOT IN (
  SELECT reservation_id
  FROM reservation_log
  WHERE change_type = 'cancel'
);</code>
Nach dem Login kopieren

Die innere Abfrage wählt alle reservation_id Werte aus, die mit Stornierungen verknüpft sind. Die äußere Abfrage gibt dann alle Reservierungen zurück, deren id nicht in dieser Stornierungsliste vorhanden ist.

Methode 2: LEFT JOIN mit IS NULL Bedingung

Diese Methode verwendet ein LEFT JOIN, um die Tabellen reservation und reservation_log zu kombinieren. Die Bedingung JOIN stellt sicher, dass nur Stornierungen berücksichtigt werden. Die WHERE-Klausel filtert nach Zeilen, in denen keine passende Stornierung gefunden wird:

<code class="language-sql">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;</code>
Nach dem Login kopieren

Das LEFT JOIN gibt alle Zeilen aus der reservation-Tabelle (r) zurück. Wenn ein passender Storno vorhanden ist, werden die entsprechenden reservation_log-Daten (l) einbezogen; andernfalls wird l.id zu NULL. Die WHERE l.id IS NULL-Bedingung filtert Zeilen mit passenden Stornierungen heraus und isoliert so effektiv die nicht stornierten Reservierungen. Im Endergebnis werden nur die Reservierungsdaten (r.*) ausgewählt.

Beide Methoden erzielen das gleiche Ergebnis und liefern eine Liste der nicht stornierten Reservierungen. Die Wahl zwischen ihnen hängt häufig von Leistungsüberlegungen ab, die für das Datenbanksystem und das Datenvolumen spezifisch sind.

Das obige ist der detaillierte Inhalt vonWie rufe ich nicht stornierte Reservierungen aus einer Datenbank mit Reservierungsprotokollen ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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