Wählen Sie Zeilen aus, die mit allen Elementen in einer Liste übereinstimmen
Angenommen ich habe zwei Tabellen:
cars
– Liste der Autos
carname | modelnumber | ...
passedtest
– enthält jeder test, der ein Auto übergeben:
id | carname | testtype | date | ...
1 | carA | A | 2000 |
2 | carB | C | 2000 |
3 | carC | D | 2001 |
4 | carA | C | 2002 |
Nun, wie kann ich wählen Sie ein Auto aus der passedtest
Tabelle, die alle tests bestanden (A, B, C, D)?
Ich habe versucht, die IN
statement, aber es passt auch Autos, die passieren auch einem test. Ich bin auf der Suche nach einer Erklärung zu entsprechen alle Werte in einer Liste über alle Zeilen.
InformationsquelleAutor der Frage user1229351 | 2013-04-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie über dieses?
Können Sie es auch verwenden, als eine innere Anweisung für die Aufnahme von Informationen aus der
cars
Tabelle:InformationsquelleAutor der Antwort MarcinJuraszek
Diese Art von problem nennt
Relational Division
.wenn ein
UNIQUE
Einschränkung war nicht durchzusetzenTestType
für jedenCarName
auf dem TischPassedTest
eineDISTINCT
- Schlüsselwort ist erforderlich, aufCOUNT()
so wird es zählen nur eindeutige Werte.aber wenn Sie sind nur daran interessiert, auf die
CARNAME
dann brauchen Sie nicht, die Tabellen zu verknüpfen. Abfragen auf TabellePassedTest
an Ihre Bedürfnisse anpassen.InformationsquelleAutor der Antwort John Woo
Den Sie ausführen möchten, relationale division, eine operation ist nicht implementiert in SQL. Hier ist ein Beispiel, wo haben wir eine Produkt-Lieferanten Tisch und ein -Produkte Tabelle:
... und wir wollen finden, dass alle Lieferanten, die Lieferung ALLER benötigten Produkte und vielleicht noch andere. Das Ergebnis im obigen Beispiel wäre der Anbieter 1 und 2.
Die meisten geradlinig Lösung ist diese:
Und wenn wir wollen, finden Sie alle Lieferanten, die Lieferung ALLER benötigten Produkte und keine andere (genaue Aufteilung/kein Rest), dann fügen Sie eine weitere Bedingung, die oben:
Eine Alternative Lösung ist das formulieren des Problems: wählen Sie Lieferanten, wo Sie ein gewünschtes Produkt nicht vorhanden ist, existiert nicht in der gelieferten Produkte durch den Lieferanten. Hmmm:
InformationsquelleAutor der Antwort Salman A