Datenbankabfrage: Identifizieren von Autos, die alle Tests bestehen
Diese Anleitung zeigt, wie Sie effizient Autos aus einer Datenbank auswählen, die eine vordefinierte Reihe von Tests erfolgreich abgeschlossen haben. Wir konzentrieren uns auf ein Szenario, in dem wir in der Tabelle passedtest
Autos identifizieren müssen, die alle Tests (A, B, C und D) bestanden haben.
Einschränkungen der IN
-Erklärung
Während die IN
-Anweisung nützlich ist, um zu überprüfen, ob ein Wert in einer Liste vorhanden ist, ist sie für diese spezielle Aufgabe ungeeignet. Die Verwendung von IN
würde fälschlicherweise Autos identifizieren, die auch nur einen der erforderlichen Tests bestanden haben. Es ist ein robusterer Ansatz erforderlich.
Aggregation und Gruppierung nutzen
Die Lösung liegt in der Verwendung von Aggregatfunktionen und Gruppierung. Wir verwenden die Funktion COUNT()
, um die Anzahl der verschiedenen Testtypen zu bestimmen, die jedes Auto bestanden hat. Die GROUP BY
-Klausel organisiert die Ergebnisse dann nach Fahrzeugnamen, sodass wir unterschiedliche Tests pro Fahrzeug zählen können.
Ergebnisse filtern mit HAVING
Die HAVING
-Klausel ist entscheidend für das Filtern der gruppierten Ergebnisse. Es ermöglicht uns, Autos zu isolieren, deren Anzahl unterschiedlicher Testtypen der Gesamtzahl der erforderlichen Tests entspricht (in diesem Fall vier).
Die SQL-Lösung
Die folgende SQL-Abfrage erzielt das gewünschte Ergebnis:
<code class="language-sql">SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4;</code>
Diese Abfrage wählt effizient nur die carname
s aus der passedtest
-Tabelle aus, die alle vier angegebenen Tests bestanden haben.
Erweitern der Abfrage für umfassende Daten
Um zusätzliche Details zu den Fahrzeugen abzurufen, die alle Tests bestanden haben, kann eine verschachtelte Abfrage verwendet werden:
<code class="language-sql">SELECT * FROM cars WHERE carname IN ( SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4 );</code>
Diese erweiterte Abfrage ruft alle Spalten aus der Tabelle cars
für die Autos ab, bei denen festgestellt wurde, dass sie alle Tests in der Tabelle passedtest
bestanden haben.
Das obige ist der detaillierte Inhalt vonWie wähle ich aus einer Datenbanktabelle Autos aus, die alle Tests bestanden haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!