Heim > Datenbank > MySQL-Tutorial > So finden Sie nicht stornierte Reservierungen mit SQL: „NOT IN' vs. „LEFT JOIN'?

So finden Sie nicht stornierte Reservierungen mit SQL: „NOT IN' vs. „LEFT JOIN'?

Barbara Streisand
Freigeben: 2025-01-23 19:42:11
Original
824 Leute haben es durchsucht

How to Find Uncancelled Reservations Using SQL: `NOT IN` vs. `LEFT JOIN`?

SQL-Techniken zum Auffinden nicht stornierter Reservierungen

In diesem Artikel werden zwei effiziente SQL-Methoden zum Abrufen nicht stornierter Reservierungen aus einer Datenbank mit reservation- und reservation_log-Tabellen untersucht. Ziel ist es, nur die Reservierungen auszuwählen, für die kein Stornierungsdatensatz vorliegt.

Methode 1: Verwendung von NOT IN mit einer Unterabfrage

Dieser Ansatz verwendet eine Unterabfrage, um in der Tabelle reservation_log vorhandene Reservierungs-IDs mit dem change_type „Abbrechen“ zu identifizieren. Die Hauptabfrage wählt dann Reservierungen aus, deren IDs nicht in dieser Liste sind:

<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

Methode 2: Verwendung von LEFT JOIN

Eine effizientere Alternative verwendet ein LEFT JOIN, um die Tabellen reservation und reservation_log zu kombinieren. Ein LEFT JOIN gibt alle Zeilen aus der linken Tabelle (reservation) zurück, auch wenn es in der rechten Tabelle (reservation_log) keine Übereinstimmung gibt. Wenn keine Übereinstimmung vorliegt, lauten die Spalten der rechten Tabelle NULL. Durch das Filtern nach NULL-Werten in der Spalte change_type werden nicht stornierte Reservierungen isoliert:

<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

Beide Methoden erzielen das gleiche Ergebnis. Der LEFT JOIN-Ansatz wird jedoch im Allgemeinen wegen seiner verbesserten Leistung bevorzugt, insbesondere bei größeren Datensätzen, da er die potenziellen Leistungsprobleme vermeidet, die mit NOT IN-Unterabfragen verbunden sind. Wählen Sie die Methode, die am besten zu Ihrem Datenbanksystem und Datenvolumen passt.

Das obige ist der detaillierte Inhalt vonSo finden Sie nicht stornierte Reservierungen mit SQL: „NOT IN' vs. „LEFT JOIN'?. 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