Heim >Datenbank >MySQL-Tutorial >Wie finde ich in einer Datenbank Autos, die alle Tests (A, B, C, D) bestanden haben?

Wie finde ich in einer Datenbank Autos, die alle Tests (A, B, C, D) bestanden haben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-14 10:35:46846Durchsuche

How to Find Cars That Passed All Tests (A, B, C, D) in a Database?

Zeilengruppen filtern, die allen Elementen in der Liste entsprechen

Angenommen, es gibt zwei Tabellen:

  • Autos: Listen Sie Autos und die entsprechenden Modelle auf.
  • bestandener Test: Zeichnet den bestandenen Test jedes Fahrzeugs auf, einschließlich seiner eindeutigen ID, des Fahrzeugnamens, des Testtyps und des Datums.

Frage:

Wie erkennt man Autos, die alle Tests (A, B, C, D) bestanden haben, anhand der Tabelle Test bestanden?

Einschränkungen der IN-Anweisung:

Die Verwendung einer IN-Anweisung zum Abgleichen von Zeilen mit einer Liste von Tests kann dazu führen, dass Autos zurückgegeben werden, die nur eine Teilmenge dieser Tests bestehen.

Lösung: Verschiedene Testtypen gruppieren und zählen

Diese Lösung verwendet COUNT() und die HAVING-Klausel:

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

Diese Abfrage gruppiert Zeilen nach Autonamen und zählt die Anzahl der unterschiedlichen Testtypwerte. Ein Auto mit einem Wert von 4 hat alle vier Tests bestanden.

Zusätzliche Tipps:

Um Daten aus der Tabelle cars basierend auf dem Ergebnissatz abzurufen, verwenden Sie diese erweiterte Abfrage:

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

Das obige ist der detaillierte Inhalt vonWie finde ich in einer Datenbank Autos, die alle Tests (A, B, C, D) 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