Angenommen, es gibt zwei Tabellen:
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!