Heim > Datenbank > MySQL-Tutorial > Wie wähle ich aus einer Datenbanktabelle Autos aus, die alle Tests bestanden haben?

Wie wähle ich aus einer Datenbanktabelle Autos aus, die alle Tests bestanden haben?

DDD
Freigeben: 2025-01-14 10:19:49
Original
585 Leute haben es durchsucht

How to Select Cars That Passed All Tests from a Database Table?

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

Diese Abfrage wählt effizient nur die carnames 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>
Nach dem Login kopieren

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage