2054 votes

Left join et jointure externe Gauche dans SQL Server

Quelle est la différence entre une jointure gauche et jointure externe gauche?

2729voto

Lasse V. Karlsen Points 148037

Selon les documents: à PARTIR de (Transact-SQL):

<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
    JOIN

Le mot-clé OUTER est marqué comme étant facultatifs (entre crochets), et ce que cela signifie dans ce cas est que si vous spécifiez ou non ne fait aucune différence. Notez que tandis que les autres éléments de la clause de jointure est également marquée comme étant facultatif, laissant entre eux sera évidemment une différence.

Par exemple, l'ensemble de la type-partie de l' JOIN clause est facultative, auquel cas la valeur par défaut est INNER si vous venez de spécifier JOIN. En d'autres termes, c'est légal:

SELECT *
FROM A JOIN B ON A.X = B.Y

Voici une liste des syntaxes équivalentes:

A LEFT JOIN B            A LEFT OUTER JOIN B
A RIGHT JOIN B           A RIGHT OUTER JOIN B
A FULL JOIN B            A FULL OUTER JOIN B
A INNER JOIN B           A JOIN B

Jetez aussi un oeil à la réponse que j'ai laissé sur cette les autres DONC, la question: SQL left join vs plusieurs tables à PARTIR de la ligne?.

870voto

sactiw Points 7717

Pour répondre à ta question il n'y a pas de différence entre la GAUCHE REJOINDRE et JOINTURE EXTERNE GAUCHE, ils sont exactement les mêmes que dit...

Au premier niveau il y a principalement 3 types de jointures:

  1. INTÉRIEURE
  2. EXTÉRIEUR
  3. CROIX

  1. INNER JOIN - récupère des données si elles sont présentes dans les deux tables.

  2. JOINTURE EXTERNE sont de 3 types:

    1. LEFT OUTER JOIN - extrait des données si elles sont présentes dans la table de gauche.
    2. RIGHT OUTER JOIN - extrait des données si elles sont présentes dans la table de droite.
    3. FULL OUTER JOIN - extrait des données si elle est présente dans les deux tables.
  3. JOINTURE CROISÉE, comme son nom l'indique, n' [n X m] qui relie tout à tout.
    Comme dans le scénario où l'on énumère simplement les tables pour l'adhésion (en FROM clause de l' SELECT ), à l'aide des virgules pour séparer.


Points à noter:

  • Si vous venez de mentionner JOIN alors par défaut, c'est un INNER JOIN.
  • Un OUTER de jointure doit être LEFT | RIGHT | FULL vous ne pouvez pas simplement dire OUTER JOIN.
  • Vous pouvez déposer OUTER mot-clé, et disons LEFT JOIN ou RIGHT JOIN ou FULL JOIN.

Pour ceux qui veulent visualiser ces dans une meilleure façon, s'il vous plaît aller à ce lien: Une Explication Visuelle de Jointures SQL

447voto

Mitch Wheat Points 169614

Rien. Ils sont équivalents.

130voto

Damian Drygiel Points 3230

81voto

andrefsp Points 149

Je suis un PostgreSQL DBA, aussi loin que je pouvais comprendre la différence entre l'extérieur ou non, les jointures externes différence est un sujet qui a beaucoup de discussion tout autour de l'internet. Jusqu'à aujourd'hui je n'ai jamais vu une différence entre les deux alors je suis allé plus loin et j'ai essayer de trouver la différence entre ceux-ci. En fin de compte, j'ai lu toute la documentation à ce sujet et j'ai trouvé la réponse à cette question,

Donc, si vous regardez sur la documentation(au moins PostgreSQL), vous pouvez trouver cette phrase:

"Les mots INTÉRIEURE et EXTÉRIEURE sont en option dans toutes les formes. INTÉRIEURE est la valeur par défaut; à GAUCHE, à DROITE, et COMPLET implique une jointure externe." (http://www.postgresql.org/docs/8.4/static/queries-table-expressions.html)

En d'autres termes,

Left Join et Jointure Externe Gauche SONT LES MÊMES

Right Join et Right Outer Join SONT LES MÊMES

J'espère que cela peut être une contribution pour ceux qui sont encore à essayer de trouver la réponse.

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