92 votes

FULL OUTER JOIN vs. FULL JOIN

Je m'amuse avec des requêtes et des exemples pour mieux comprendre les jointures. Je remarque qu'en SQL Server 2008, les deux requêtes suivantes donnent les mêmes résultats :

SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name

SELECT * FROM TableA
FULL JOIN TableB
ON TableA.name = TableB.name

Est-ce qu'ils effectuent exactement la même action pour produire les mêmes résultats, ou est-ce que j'obtiendrais des résultats différents dans un exemple plus compliqué ? S'agit-il simplement d'une terminologie interchangeable ?

122voto

John Woo Points 132738

En fait, ce sont les mêmes. LEFT OUTER JOIN est identique à LEFT JOIN y RIGHT OUTER JOIN est identique à RIGHT JOIN . Il s'agit d'un moyen plus informatif de comparer des INNER Join .

Voir ceci Article de Wikipedia pour les détails.

39voto

Lion Points 7328

Microsoft® SQL Server™ 2000 utilise ces mots-clés SQL-92 pour spécifiées dans une clause FROM :

  • LEFT OUTER JOIN ou LEFT JOIN

  • JOINT EXTERNE DROIT ou JOINT DROIT

  • FULL OUTER JOIN ou FULL JOIN

De MSDN

En full outer join o full join retourne toutes les lignes des deux tables, en faisant correspondre les lignes chaque fois qu'une correspondance peut être faite et en plaçant NULL aux endroits où il n'existe aucune ligne correspondante.

15voto

MarvinM Points 511

Il est vrai que certaines bases de données reconnaissent le mot-clé OUTER. D'autres ne le font pas. Lorsqu'il est reconnu, il s'agit généralement d'un en option mot-clé. Presque toujours, FULL JOIN et FULL OUTER JOIN font exactement la même chose. (Je ne peux pas penser à un exemple où elles ne le font pas. Quelqu'un d'autre peut-il en penser un ?)

Vous vous demandez peut-être : "Pourquoi un mot clé s'il n'a aucune signification ?". La réponse se résume à un style de programmation.

Autrefois, les programmeurs s'efforçaient de rendre leur code aussi compact que possible. Chaque caractère signifiait un temps de traitement plus long. Nous utilisions des variables de 1, 2 et 3 lettres. Nous utilisions des années à 2 chiffres. Nous éliminions tous les espaces blancs inutiles. Certaines personnes programment encore de cette façon. Ce n'est plus une question de temps de traitement. Il s'agit plutôt de coder rapidement.

Les programmeurs modernes apprennent à utiliser des variables plus descriptives et à intégrer davantage de remarques et de documentation dans leur code. L'utilisation de mots supplémentaires comme OUTER permet de s'assurer que les autres personnes qui lisent le code auront plus de facilité à le comprendre. Il y aura moins d'ambiguïté. Ce style est beaucoup plus lisible et plus agréable pour les personnes qui devront maintenir ce code dans le futur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X