JOIN vs INNER JOIN et FULL OUTER JOIN

27

Je sais qu'il y a une différence entre INNER JOINet FULL OUTER JOIN, je peux le voir, mais quelle est la différence entre les deux suivants: JOIN ... ON...et INNER JOIN...ON...et pourtant encore JOIN...ON...vsFULL OUTER JOIN...ON...

La raison en est que je pense que peut-être simplement utiliser JOINest gâcher une requête sur laquelle je travaille qui est publiée sur SO, lien vers la question ICI.

Donc, fondamentalement, quelle est la différence syntaxique entre les opérations d'ensemble elles-mêmes?

Merci,

MCP_infiltrator
la source
1
La «publication croisée» affiche la même question dans différents forums. La publication d'un lien est correcte et souhaitable.
choroba
Ok, je vais poster un lien vers la question, mon code retourne beaucoup de doublons et ça me rend dingue ... Je n'ai même pas encore pris mon café du matin lol
MCP_infiltrator
4
@MCP_infiltrator jetez un oeil à probablement la meilleure explication là-bas: codinghorror.com/blog/2007/10/…
mkk
Si le vrai problème est que votre code retourne trop de doublons, vous voudrez peut-être poser une autre question où c'est le point principal. Et vous voudrez peut-être publier votre code. Lorsque j'ai aidé des personnes ayant des problèmes en double dans le passé, cela est généralement dû à des conditions de jointure incorrectes, ou parfois à un mauvais mappage entre le modèle de données SQL et le modèle de données relationnel.
Walter Mitty
Salut @WalterMitty, la question est publiée dans SO, je pense que mes jointures sont le problème, mais sur une autre note, j'étais également curieux, je ne suis que 6 mois à écrire du SQL et de l'auto-apprentissage, le lien est dans la question.
MCP_infiltrator

Réponses:

33

JOINet INNER JOINsont les mêmes, le mot-clé interne est facultatif car toutes les jointures sont considérées comme des jointures internes, sauf indication contraire. La différence entre JOINet FULL OUTER JOINest la même que la différence entre INNER JOINet FULL OUTER JOIN.

An INNER JOINne retournera des lignes correspondantes que si une ligne du tableau A correspond à plusieurs lignes du tableau B, la ligne du tableau A sera répétée avec chaque ligne du tableau B et vice versa.

A FULL OUTER JOINrenverra tout ce que fait une jointure interne et renverra toutes les lignes sans correspondance de chaque table.

Ryathal
la source
5
Merci, je ne le savais pas JOINet INNER JOINc'étaient des déclarations équivalentes.
MCP_infiltrator
7
La meilleure pratique consiste à écrire explicitement INNER JOIN afin d'éviter toute confusion.
Neil