Finden Sie Autos, die alle Tests bestanden haben, aus der Testliste
Für diese Aufgabe müssen Autos aus der Tabelle „Autos“ identifiziert werden, die alle in der Tabelle „Passedtest“ aufgeführten Tests erfolgreich bestanden haben. Während eine einfache IN-Anweisung Autos abrufen kann, die einen einzelnen Test bestehen, besteht die Anforderung darin, sicherzustellen, dass jedes Auto alle Tests in der Liste besteht.
Um dies zu erreichen, können wir eine Kombination aus Aggregation (GROUP BY, HAVING) und Mengenlehre verwenden.
Lösung:
<code class="language-sql">SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname);</code>
Erklärung:
Um Daten aus der Tabelle „Autos“ einzubeziehen, können Sie die innere Anweisung verwenden:
<code class="language-sql">SELECT * FROM cars WHERE carname IN ( SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname) );</code>
Alternative:
Eine andere Möglichkeit ist die Verwendung der JOIN-Operation:
<code class="language-sql">SELECT DISTINCT c.carname FROM cars c JOIN PassedTest pt ON c.carname = pt.carname GROUP BY c.carname HAVING COUNT(*) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname);</code>
Das obige ist der detaillierte Inhalt vonWie finde ich Autos, die alle aufgeführten Tests bestanden haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!