sql-server - left - right outer join




LEFT JOIN par rapport à LEFT OUTER JOIN dans SQL Server (10)

Quelle est la différence entre LEFT JOIN et LEFT OUTER JOIN ?


Pour répondre à votre question il n'y a pas de différence entre LEFT JOIN et LEFT OUTER JOIN, ils sont exactement les mêmes que ...

Au niveau supérieur, il y a principalement 3 types de jointures:

  1. INTERNE
  2. EXTÉRIEUR
  3. TRAVERSER
  1. INNER JOIN - récupère les données si présentes dans les deux tableaux.

  2. OUTER JOIN sont de 3 types:

    1. LEFT OUTER JOIN - récupère les données si présentes dans la table de gauche.
    2. RIGHT OUTER JOIN - récupère les données si elles sont présentes dans la bonne table.
    3. FULL OUTER JOIN - récupère les données si présentes dans l'une des deux tables.
  3. CROSS JOIN , comme son nom l'indique, fait [n X m] qui joint tout à tout.
    Semblable au scénario où l'on liste simplement les tables à joindre (dans la clause FROM de l' SELECT ), en utilisant des virgules pour les séparer.

Points à noter:

  • Si vous mentionnez simplement JOIN par défaut, il s'agit d'une INNER JOIN .
  • Une jointure OUTER doit être à LEFT RIGHT | FULL vous ne pouvez pas simplement dire OUTER JOIN .
  • Vous pouvez supprimer le mot-clé OUTER et simplement dire LEFT JOIN ou RIGHT JOIN ou FULL JOIN .

Pour ceux qui veulent mieux les visualiser, allez sur ce lien: Une Explication Visuelle des Jointures SQL


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

Rien LEFT JOIN et LEFT OUTER JOIN sont équivalents.


Il n'y a que 3 jointures:

  • A) Croix Join = Cartésienne (Ex: Table A, Table B)
  • B) Inner Join = JOIN (Par exemple: Table A Join / Inner Join Table B)
  • C) Jointure externe:

       There are three type of outer join
       1)  Left Outer Join     = Left Join
       2)  Right Outer Join    = Right Join
       3)  Full Outer Join     = Full Join    
    

J'espère que cela aiderait.


Il y a principalement trois types de JOIN

  1. Inner: récupère les données présentes dans les deux tables
    • Seul JOIN signifie INNER JOIN
  2. Extérieur: sont de trois types

    • LEFT OUTER - - récupère les données présentes uniquement dans la table de gauche et condition correspondante
    • RIGHT OUTER - - récupère les données présentes uniquement dans la bonne table
    • FULL OUTER - - récupère les données présentes ou les deux
    • (GAUCHE ou DROITE ou FULL) OUTER JOIN peut être écrit sans écrire "OUTER"
  3. Cross Join: tout rejoint pour tout


Je suis un administrateur de bases de données PostgreSQL, autant que je puisse comprendre la différence entre la différence de jointures externe ou externe est un sujet qui a beaucoup de discussion tout autour de l'Internet. Jusqu'à aujourd'hui, je n'ai jamais vu de différence entre les deux; Donc je suis allé plus loin et j'essaie de trouver la différence entre ceux-là. A la fin j'ai lu toute la documentation à ce sujet et j'ai trouvé la réponse pour ça,

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

"Les mots INNER et OUTER sont facultatifs dans toutes les formes, INNER est la valeur par défaut, LEFT , RIGHT et FULL impliquent une jointure externe."

En d'autres mots,

LEFT JOIN et LE LEFT OUTER JOIN SONT LES MEMES

RIGHT JOIN et la RIGHT OUTER JOIN SONT LES MÊMES

J'espère que cela peut être une contribution pour ceux qui essaient toujours de trouver la réponse.


Je trouve plus facile de penser à Joins dans l'ordre suivant:

  • CROSS JOIN - un produit cartésien des deux tables. TOUTES les jointures commencent ici
  • INNER JOIN - un CROSS JOIN avec un filtre ajouté.
  • OUTER JOIN - un INNER JOIN avec des éléments manquants (à partir de la table GAUCHE ou DROITE) ajouté par la suite.

Jusqu'à ce que je comprenne ce modèle (relativement) simple, JOINS était toujours un peu plus d'un art noir. Maintenant, ils ont un sens parfait.

J'espère que cela aide plus qu'il ne le rend confus.


Pour répondre à ta question

Dans Sql Server, la syntaxe des jointures est OUTER facultative

Il est mentionné dans l'article msdn: https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx

Donc, la liste suivante montre les syntaxes équivalentes jointes avec et sans OUTER

LEFT OUTER JOIN => LEFT JOIN
RIGT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN

Autres syntaxes équivalentes

INNER JOIN => JOIN
CROSS JOIN => ,

Recommandez fortement Dotnet Mob Artice: se joint au serveur Sql


Pourquoi les touches GAUCHE / DROITE et GAUCHE EXTÉRIEUR / DROIT EXTÉRIEUR sont-elles les mêmes? Expliquons pourquoi ce vocabulaire. Comprenez que les jointures LEFT et RIGHT sont des cas spécifiques de la jointure OUTER, et ne peuvent donc être autre chose que OUTER LEFT / OUTER RIGHT. La jointure OUTER est également appelée FULL OUTER, contrairement aux jointures LEFT et RIGHT qui sont des résultats PARTIELS de la jointure OUTER. Effectivement:

Table A | Table B     Table A | Table B      Table A | Table B      Table A | Table B
   1    |   5            1    |   1             1    |   1             1    |   1
   2    |   1            2    |   2             2    |   2             2    |   2
   3    |   6            3    |  null           3    |  null           -    |   -
   4    |   2            4    |  null           4    |  null           -    |   -
                        null  |   5             -    |   -            null  |   5
                        null  |   6             -    |   -            null  |   6

                      OUTER JOIN (FULL)     LEFT OUTER (partial)   RIGHT OUTER (partial)

Il est maintenant clair pourquoi ces opérations ont des alias, et il est clair que seulement 3 cas existent: INNER, OUTER, CROSS. Avec deux sous-cas pour l'EXTERNE. Le vocabulaire, la façon dont les enseignants expliquent cela, ainsi que certaines réponses ci-dessus, donnent souvent l'impression qu'il y a beaucoup de différents types de participation. Mais c'est en fait très simple.


Selon la documentation: FROM (Transact-SQL) :

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

Le mot-clé OUTER est marqué comme facultatif (entre crochets), ce que cela signifie dans ce cas est que si vous le spécifiez ou non ne fait aucune différence. Notez que, bien que les autres éléments de la clause de jointure soient également marqués comme optionnels, les supprimer fera bien entendu une différence.

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

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

Voici une liste de 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 coup d'oeil à la réponse que j'ai laissée sur cette autre question SO: SQL joint gauche vs plusieurs tables sur la ligne FROM? .


Sucre syntaxique, il est plus évident pour le lecteur occasionnel que la jointure n'est pas interne.





outer-join