Heim >Datenbank >MySQL-Tutorial >Wie kann ich mit SQL in einer Liste Autos auswählen, die alle Tests bestanden haben?
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!