So verwenden Sie alle, einige und ANY in SQL-Anweisungen

SOME und ANY kann ALL, verwirrend sein, in SQL-Anweisungen. Vor Tausenden von Jahren der griechische Philosoph Aristoteles formulierte ein System der Logik, die die Grundlage für viel des westlichen Denkens wurde. Das Wesen dieser Logik ist mit einer Reihe von Räumen zu starten, die Sie wahr sein wissen, gültig Vorgänge anwenden, und damit auf neue Wahrheiten kommen.

Ein Beispiel für dieses Verfahren ist wie folgt:

Premise 1: Alle Griechen menschlich sind.

Premise 2: Alle Menschen sind sterblich.

Fazit: Alle Griechen sind sterblich.

Ein anderes Beispiel:

Premise 1: Einige Griechen sind Frauen.

Premise 2: Alle Frauen menschlich sind.

Fazit: Einige Griechen sind menschlich.

Durch ein drittes Beispiel darstellt, sollten die gleiche logische Idee des zweiten Ausführungsbeispiels in einer etwas anderen Weise:

Wenn alle Griechen sind Frauen und alle Frauen sind Menschen, dann sind einige Griechen menschlich.

Das erste Beispiel verwendet die Allquantor ALLE In beiden Räumen, so dass Sie einen Sound Abzug über alle Griechen im Abschluss zu machen. Das zweite Beispiel verwendet die Existenzquantor ETWAS in einer Prämisse, so dass Sie einen Abzug über einige Griechen in den Abschluss zu machen. Das dritte Beispiel verwendet die Existenzquantor IRGENDEIN, ein Synonym für ETWAS, das gleiche Ergebnis zu gelangen Sie im zweiten Beispiel erreichen.

Schauen Sie, wie ETWAS, IRGENDEIN, und ALLE gelten in SQL.

Betrachten wir ein Beispiel in der Baseball-Statistiken. Baseball ist ein anspruchsvoller Sport, vor allem für Krügen. Ein Krug muss die Baseball-Platte zu Hause zwischen 90 und 150 mal während eines Spiels zu werfen. Dieser Aufwand kann anstrengend sein, und wenn der Werfer unwirksam wird, bevor das Spiel endet, ein Relief Pitcher ersetzt ihn. ein ganzes Spiel Pitching ist eine herausragende Leistung, unabhängig davon, ob die Anstrengung führt zu einem Sieg.

Angenommen, Sie den Überblick über die Anzahl der komplette Spiele zu halten sind, dass alle Major-League-Pitcher Spielfeld. In einer Tabelle, Liste Sie alle Pitcher American League, und in einer anderen Tabelle, Liste Sie alle National League Pitcher. Beide Tabellen enthalten die Spieler Vornamen, Nachnamen und die Anzahl der komplette Spiele aufgeschlagen.

Die American League ermöglicht einen Designated Hitter (DH) (wer ist nicht erforderlich, eine defensive Position zu spielen) bat anstelle von einem der neun Spieler, die Verteidigung spielen. Die National League nicht erlaubt Designated Hitter, aber Pinch-Hitter nicht zulässt.

Wenn die Pinch-Hitter in das Spiel für den Krug kommt, kann der Werfer nicht für den Rest des Spiels. Normalerweise sind die DH für den Werfer schlägt, weil Krügen sind notorisch schlecht Hitter. Krug muss so viel Zeit und Mühe aufwenden ihre Pitching zu perfektionieren, dass sie nicht so viel Zeit haben Wimper zu üben, wie die anderen Spieler tun.

Angenommen, Sie haben eine Theorie, dass im Durchschnitt, American League Start Pitcher werfen mehr komplette Spiele als National League starten Pitcher tun. Diese Idee basiert auf Ihrer Beobachtung, dass Designated Hitter hart Werfen, schwach knall ermöglichen, Krügen American League Pitching so lange zu halten, wie sie sind wirksam, auch in einem engen Spiel. Da ein DH bereits für diesen Krügen zu zucken, ihre schlechte hitting ist keine Haftung.

In der National League, unter alltäglichen Umständen würde jedoch der Werfer gehen. Wenn in den späten Innings Hinter, würden die meisten Manager für den Werfer für Pinch Hitter bat nennen, entschieden wird, dass eine Basis in dieser Situation treffen immer wichtiger ist eine effektive Krug im Spiel als zu halten. Um zu testen, Ihre Theorie, formulieren Sie die folgende Abfrage:

SELECT Vorname, LastNameFROM AMERICAN_LEAGUERWHERE CompleteGames> ALL (SELECT CompleteGamesFROM NATIONAL_LEAGUER) -

Die Unterabfrage (die innere WÄHLEN) Eine Liste mit zurückgibt, für jede National League Pitcher, die Anzahl der vollständigen Spiele, die er aufgeschlagen. Die äußere Abfrage gibt die Vor- und Nachnamen aller amerikanischen Leaguers, die mehr komplette Spiele lagerten sich als ALLE der nationalen Leaguers.

Die gesamte Abfrage gibt die Namen der American League Pitcher, die mehr komplette Spiele als der Werfer aufgeschlagen, der die meisten komplette Spiele in der National League geworfen hat.

Betrachten Sie die folgende ähnliche Aussage:

SELECT Vorname, LastNameFROM AMERICAN_LEAGUERWHERE CompleteGames> ANY (SELECT CompleteGamesFROM NATIONAL_LEAGUER) -

In diesem Fall verwenden Sie die Existenzquantor IRGENDEIN anstelle des Allquantor ALLE. Die Unterabfrage (die innere, geschachtelte Abfrage) ist identisch mit der Unterabfrage in dem vorherigen Beispiel. Diese Unterabfrage ruft eine vollständige Liste der gesamten Spielstatistiken für alle National League Pitcher.

Die äußere Abfrage gibt die Vor- und Nachnamen aller Pitcher American League, die mehr komplette Spiele lagerten sich als IRGENDEIN National League Pitcher. Weil Sie so gut wie sicher sein können, dass zumindest eine National League Pitcher ein komplettes Spiel nicht aufgeschlagen hat, enthält das Ergebnis wahrscheinlich alle Pitcher American League, die mindestens ein komplettes Spiel aufgeschlagen haben.

Wenn Sie das Schlüsselwort ersetzen IRGENDEIN mit dem Äquivalent Schlüsselwort ETWAS, das Ergebnis ist das gleiche. Wenn die Aussage, dass mindestens ein Krug National League hat nicht ein komplettes Spiel aufgeschlagen eine wahre Aussage ist, kann man dann sagen, dass ETWAS National League Pitcher hat nicht ein komplettes Spiel aufgeschlagen.

Menü