Comment utiliser tout, certains, et tout dans les états SQL

Tout, certains, et tout peut être source de confusion dans les instructions SQL. Il ya des milliers d'années, le philosophe grec Aristote a formulé un système de logique qui est devenu la base pour une grande partie de la pensée occidentale. L'essence de cette logique est de commencer avec un ensemble de locaux que vous savez être vrai, appliquer des opérations valides, et, ainsi, arriver à de nouvelles vérités.

Un exemple de cette procédure est comme suit:

Prémisse 1: Tous les Grecs sont des êtres humains.

Prémisse 2: Tous les hommes sont mortels.

Conclusion: Tous les Grecs sont mortels.

Un autre exemple:

Prémisse 1: Certains Grecs sont des femmes.

Prémisse 2: Toutes les femmes sont des êtres humains.

Conclusion: Certains Grecs sont humains.




En manière de présenter un troisième exemple, considérez la même idée logique du deuxième exemple d'une manière légèrement différente:

Si des Grecs sont des femmes et toutes les femmes sont des êtres humains, puis quelques Grecs sont humains.

Le premier exemple utilise le quantificateur universel TOUS dans les deux locaux, vous permettant de faire une déduction sonore de tous les Grecs dans la conclusion. Le deuxième exemple utilise le quantificateur existentiel CERTAINS en un seul principe, vous permettant de faire une déduction au sujet de certains Grecs dans la conclusion. Le troisième exemple utilise le quantificateur existentiel QUELCONQUE, synonyme de CERTAINS, pour atteindre la même conclusion que vous atteignez dans le second exemple.

Regardez comment CERTAINS, QUELCONQUE, et TOUS appliquer dans SQL.

Prenons un exemple dans les statistiques de baseball. Le baseball est un sport exigeant, surtout pour les lanceurs. Un lanceur doit lancer la balle à la plaque de la maison entre 90 et 150 fois lors d'un match. Cet effort peut être épuisant, et si le lanceur devient inefficace avant la fin du jeu, un lanceur de relève le remplace. Tangage un jeu entier est une réalisation exceptionnelle, indépendamment du fait que les résultats de l'effort dans une victoire.

Supposons que vous garder une trace du nombre de jeux complets que tous les lanceurs des ligues majeures de tangage. Dans un tableau, vous lister tous les lanceurs de la Ligue américaine, et dans une autre table, vous énumérez tous les lanceurs de la Ligue nationale. Les deux tableaux contiennent des prénoms des joueurs, noms de famille, et le nombre de jeux complets campèrent.

La Ligue américaine permet à un frappeur désigné (DH) (qui n'a pas besoin de jouer une position défensive) de chauve-souris à la place de l'un des neuf joueurs qui jouent la défense. La Ligue nationale ne permet pas de frappeurs désignés, mais ne permet pincement frappeurs.

Lorsque le frappeur suppléant vient dans le jeu pour le lanceur, le lanceur ne peut pas jouer pour le reste de la partie. Habituellement, les chauves-souris de DH pour le lanceur, parce cruches frappeurs sont notoirement mauvaises. Pichets doivent passer autant de temps et d'efforts sur le perfectionnement de leur tangage qu'ils ne possèdent pas autant de temps à la pratique au bâton que les autres joueurs font.

Supposons que vous avez une théorie qui, en moyenne, de la Ligue américaine lanceurs partants jettent jeux plus complets que faire la Ligue nationale de lanceurs partants. Cette idée est basée sur votre observation que frappeurs désignés permettent dur Lancer, faible-Frapper, lanceurs de la Ligue américaine de garder tangage tant qu'ils sont efficaces, même dans un match serré. Parce qu'un DH est déjà au bâton pour ces lanceurs, leur mauvaise frappe est pas un passif.

Dans la Ligue nationale, mais, dans les circonstances de tous les jours le lanceur irait au bâton. Lorsque fuite à la fin des manches, la plupart des gestionnaires appellent pour un frappeur au bâton pour le lanceur, jugeant que l'obtention d'une base de frapper dans cette situation est plus important que de garder un lanceur efficace dans le jeu. Pour tester votre théorie, vous formulez la requête suivante:

SELECT Prénom, LastNameFROM AMERICAN_LEAGUERWHERE CompleteGames> ALL (SELECT CompleteGamesFROM NATIONAL_LEAGUER) -

La sous-requête (l'intérieur SELECT) Renvoie une liste indiquant, pour chaque lanceur de la Ligue nationale, le nombre de jeux complets il a lancé. La requête externe renvoie les noms et prénoms de tous les ligueurs américains qui a lancé les jeux plus complète que TOUS des ligueurs nationaux.

L'intégralité de la requête renvoie les noms de ces lanceurs de la Ligue américaine qui a lancé les jeux plus complet que le lanceur qui a jeté les jeux les plus complets dans la Ligue nationale.

Considérons la déclaration similaire suivante:

SELECT Prénom, LastNameFROM AMERICAN_LEAGUERWHERE CompleteGames> ANY (SELECT CompleteGamesFROM NATIONAL_LEAGUER) -

Dans ce cas, vous utilisez le quantificateur existentiel QUELCONQUE au lieu de le quantificateur universel TOUS. La sous-requête (le, de requête interne imbriqué) est identique à la sous-requête dans l'exemple précédent. Cette sous-requête récupère une liste complète des statistiques complètes de jeu pour tous les lanceurs de la Ligue nationale.

La requête externe renvoie les noms et prénoms de tous les lanceurs de la Ligue américaine qui a lancé les jeux plus complète que QUELCONQUE Lanceur de la Ligue nationale. Parce que vous pouvez être quasiment certain qu'au moins un lanceur de la Ligue nationale n'a pas lancé un match complet, le résultat inclut probablement tous les lanceurs de la Ligue américaine qui ont dressées au moins un jeu complet.

Si vous remplacez le mot-clé QUELCONQUE le mot équivalent CERTAINS, le résultat est le même. Si la déclaration qu'au moins un lanceur de la Ligue nationale n'a pas lancé un match complet est un énoncé vrai, vous pouvez alors dire que CERTAINS Ligue nationale de baseball n'a pas lancé un match complet.


» » » » Comment utiliser tout, certains, et tout dans les états SQL