Heim >Datenbank >MySQL-Tutorial >Wie kann ich mit SQL in einer Liste Autos auswählen, die alle Tests bestanden haben?

Wie kann ich mit SQL in einer Liste Autos auswählen, die alle Tests bestanden haben?

Susan Sarandon
Susan SarandonOriginal
2025-01-14 10:53:44695Durchsuche

How Can I Select Cars That Passed All Tests in a List Using SQL?

Zeilen filtern, die allen Elementen in der Liste entsprechen

Angenommen, Sie haben zwei Tabellen, „Autos“ und „Passedtest“, und Sie benötigen eine Möglichkeit, Autos zu identifizieren, die eine bestimmte Reihe von Tests bestanden haben. In der Tabelle „Passedtest“ werden die von jedem Fahrzeug bestandenen Tests erfasst.

Eine Möglichkeit, dies zu erreichen, ist die Verwendung einer IN-Anweisung. Allerdings liefert diese Methode möglicherweise nicht die gewünschten Ergebnisse, da sie Autos zurückgibt, die sogar einen der Tests in der angegebenen Liste bestehen. Um alle Werte in der Liste in allen Zeilen abzugleichen, ist eine andere Lösung erforderlich.

Die folgende SQL-Abfrage verwendet GROUP BY- und HAVING-Klauseln, um diese Aufgabe zu erfüllen:

<code class="language-sql">SELECT carname
FROM PassedTest
GROUP BY carname
HAVING COUNT(DISTINCT testtype) = 4</code>

Diese Abfrage gruppiert zunächst die Zeilen in der Tabelle „passedtest“ nach der Spalte „carname“. Anschließend wird die Funktion COUNT(DISTINCT) verwendet, um die Anzahl der unterschiedlichen „Testtyp“-Werte für jedes Fahrzeug zu berechnen. Die HAVING-Klausel wird zum Filtern der Ergebnisse verwendet, um nur Autos auszuwählen, deren Anzahl verschiedener Testtypen gleich 4 ist (vorausgesetzt, die Liste enthält vier Tests).

Sie können die Ergebnisse dieser Abfrage auch als verschachtelte Anweisung verwenden, um zusätzliche Informationen aus der Tabelle „Autos“ zu extrahieren:

<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 relevanten Daten aus der Tabelle „Autos“ für Fahrzeuge ab, die die angegebenen Kriterien erfüllen.

Das obige ist der detaillierte Inhalt vonWie kann ich mit SQL in einer Liste Autos auswählen, die alle Tests bestanden haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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