Heim > Datenbank > MySQL-Tutorial > Wie finde ich Autos, die alle aufgeführten Tests bestanden haben?

Wie finde ich Autos, die alle aufgeführten Tests bestanden haben?

Patricia Arquette
Freigeben: 2025-01-14 10:40:43
Original
987 Leute haben es durchsucht

How Can I Find Cars That Passed All Listed Tests?

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

Erklärung:

  • Unterabfrage (SELECT COUNT(*) FROM PassedTest GROUP BY carname) gibt die Gesamtzahl der eindeutigen Tests pro Auto zurück.
  • HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname) Bedingung prüft, ob die Anzahl der verschiedenen Testtypen eines Autos der Gesamtzahl der Tests entspricht, um sicherzustellen, dass das Auto alle Tests bestanden hat Tests.

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

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

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!

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