Question

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

Était-ce utile?

La solution

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). Dans ce cas, cela signifie que le fait de le spécifier ou non ne fait aucune différence. Notez que bien que les autres éléments de la clause join soient également marqués comme optionnels, les laisser en dehors de la liste fera bien sûr une différence.

Par exemple, la partie type de la clause JOIN est facultative. Dans ce 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 également un coup d'œil à la réponse que j'ai laissée à cette autre question SO: jointure gauche SQL vs tables multiples sur la ligne FROM? .

entrer la description de l'image ici

Autres conseils

  

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 dit ...

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

  1. INNER
  2. OUTER
  3. CROSS
  1. INNER JOIN : récupère les données si elles sont présentes dans les deux tableaux.

  2. OUTER JOIN sont de types 3 :

    1. LEFT OUTER JOIN : récupère les données si elles sont présentes dans le tableau de gauche.
    2. RIGHT OUTER JOIN - récupère les données si elles sont présentes dans le tableau de droite.
    3. FULL OUTER JOIN - récupère les données si elles sont présentes dans l'une des deux tables.
  3. CROSS JOIN , comme son nom l’indique, [n X m] relie tout à tout.
    Similaire au scénario dans lequel nous répertorions simplement les tables à joindre (dans la clause FROM de l'instruction SELECT ), en utilisant des virgules pour les séparer.

Points à noter:

  • Si vous ne faites que mentionner JOIN , il s'agit par défaut d'un INNER JOIN .
  • Une jointure OUTER doit être LEFT | DROIT | 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 souhaitent mieux visualiser ceux-ci, veuillez cliquer sur ce lien: Explication visuelle des jointures SQL

  

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

Rien . LEFT JOIN et LEFT OUTER JOIN sont équivalents.

Je suis un administrateur de base de données PostgreSQL. Autant que je sache, la différence entre les jointures externes et non externes est un sujet qui suscite de nombreuses discussions sur Internet. Jusqu'à ce jour, je n'ai jamais vu de différence entre ces deux Alors je suis allé plus loin et j'essaie de trouver la différence entre ceux-ci. À la fin, j'ai lu toute la documentation à ce sujet et j'ai trouvé la réponse à cette question,

Donc, si vous consultez la documentation (du 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 termes,

LEFT JOIN et LEFT OUTER JOIN SONT LES MÊMES

RIGHT JOIN et RIGHT OUTER JOIN SONT LES MÊMES

J'espère que cela pourra être utile pour ceux qui essaient encore de trouver la réponse.

Les jointures à gauche et Les jointures externes à gauche sont un et le identiques . Le premier est le raccourci pour le second. On peut dire la même chose de la relation Jointure droite et Jointure droite droite . La démonstration illustrera l'égalité. Des exemples de travail de chaque requête ont été fournis via SQL Fiddle . Cet outil permettra une manipulation pratique de la requête.

Étant donné

entrer la description de l'image ici

Rejoindre la gauche et Rejoindre externe gauche

entrer la description de l'image ici

Résultats

entrer la description de l'image ici

S'inscrire à droite et Jointure externe droite

entrer la description de l'image ici

Résultats

entrer la description de l'image ici

Je trouve plus facile de penser aux jointures dans l'ordre suivant:

  • CROSS JOIN - 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 (de la table LEFT ou RIGHT) ajouté ensuite.

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

J'espère que cela aide plus que cela ne crée de confusion.

Pourquoi les positions GAUCHE / DROITE et GAUCHE EXTERNE / DROITE EXTERNE sont-elles les mêmes? Expliquons pourquoi ce vocabulaire. Comprenez que les jointures GAUCHE et DROITE sont des cas spécifiques de la jointure OUTER, et ne pourraient donc être autre chose qu'OUTER LEFT / OUTER RIGHT. La jointure OUTER est également appelée FULL OUTER, par opposition aux jointures GAUCHE et DROITE qui sont les résultats PARTIAL de la jointure OUTER. En effet:

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, de même qu'il est clair qu'il n'existe que 3 cas: INNER, OUTER, CROSS. Avec deux sous-cas pour l'OUTER. Le vocabulaire, la façon dont les enseignants expliquent cela, ainsi que certaines réponses ci-dessus, donnent souvent l’impression qu’il existe de nombreux types de jointure. Mais c’est très simple.

Pour répondre à votre question

  

Dans SQL Server, la syntaxe des jointures OUTER est facultative

.

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

La liste suivante montre donc les syntaxes de jointure équivalentes avec et sans OUTER

.
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN

Autres syntaxes équivalentes

INNER JOIN => JOIN
CROSS JOIN => ,

Fortement recommandé Dotnet Mob Artice: se joint à Sql Server entrer la description de l'image ici

Il existe principalement trois types de JOIN

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

    • LEFT OUTER - - récupère les données présentes uniquement dans le tableau de gauche & amp; condition correspondante
    • RIGHT OUTER - - récupère les données présentes uniquement dans le tableau de droite & amp; condition correspondante
    • FULL OUTER - - récupère les données présentes dans une table ou dans les deux
    • (LEFT ou RIGHT ou FULL) OUTER JOIN peut être écrit sans écrire "OUTER"
  3. Cross Join: joint tout à tout

Il n'y a que 3 jointures:

  • A) Jointure = cartésienne (E.g: Tableau A, Tableau B)
  • B) Jointure interne = JOIN (E.g: Table A jointure / Table de jointure interne 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 ça aiderait.

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

Juste dans le contexte de cette question, je souhaite également publier les 2 opérateurs "APPLIQUER":

JOINS :

  1. INNER JOIN = JOIN

  2. OUTER JOIN

    • LEFT OUTER JOIN = LEFT JOIN

    • RIGHT OUTER JOIN = RIGHT JOIN

    • JOINT COMPLET OUTER = JOINT COMPLET

  3. CROSS JOIN

SELF-JOIN : il ne s'agit pas exactement d'un type de jointure distinct. Cela consiste essentiellement à joindre une table à elle-même en utilisant l'une des jointures ci-dessus. Mais j’ai pensé qu’il valait la peine d’être mentionné dans le contexte des discussions JOIN car vous entendrez souvent ce terme dans la communauté des développeurs SQL.

APPLIQUER :

  1. CROSS APPLY : similaire à INNER JOIN (mais présente l'avantage supplémentaire de pouvoir calculer quelque chose dans le tableau de droite pour chaque ligne du tableau de gauche et ne renvoie que les lignes correspondantes)
  2. OUTER APPLY : similaire à LEFT OUTER JOIN (mais présente l'avantage supplémentaire de pouvoir calculer quelque chose dans le tableau de droite pour chaque ligne du tableau de gauche et renvoie toutes les lignes de gauche. table indépendamment d'une correspondance sur la table de droite)

https: // www. mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/

https://sqlhints.com/2016/ 10/23 / outer-apply-in-sql-server /

Exemple concret, quand utiliser APPLICATION OUTER / CROSS en SQL

Je trouve que l'opérateur APPLY est très bénéfique car il offre de meilleures performances que de devoir effectuer le même calcul dans une sous-requête. Elles remplacent également de nombreuses fonctions analytiques dans les anciennes versions de SQL Server. C’est la raison pour laquelle j’estime qu’après être à l’aise avec JOINS, un développeur SQL devrait essayer d’apprendre les opérateurs APPLY.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top