Qu'est-ce qu'un JOIN
SQL et quels sont les différents types ?
Une illustration de [W3schools] (https://www.w3schools.com/sql/sql_join.asp) :
![INNER JOIN - Seuls les enregistrements qui correspondent à la condition dans les deux tables][1]
![LEFT JOIN - Tous les enregistrements de la table 1 en conjonction avec les enregistrements qui correspondent à la condition dans la table 2][2].
![JOINT DROIT - Tous les enregistrements de la table 2 en conjonction avec les enregistrements de la table 1 qui correspondent à la condition][3].
![FULL OUTER JOIN - Combinaison de jointures externes gauche et droite correspondant à la clause ON mais préservant les deux tables][4].
[1] : http://i.stack.imgur.com/eJhrt.png [2] : http://i.stack.imgur.com/fZaT4.png [3] : http://i.stack.imgur.com/n9Bps.png [4] : http://i.stack.imgur.com/aFHpq.png [5] : http://www.w3schools.com/sql/sql_join.asp
SQL JOIN
?La méthode "SQL JOIN" permet d'extraire des données de deux ou plusieurs tables de base de données.
SQL JOIN
s ?Il existe au total cinq JOIN
s. Il s'agit de :
1. JOIN or INNER JOIN
2. OUTER JOIN
2.1 LEFT OUTER JOIN or LEFT JOIN
2.2 RIGHT OUTER JOIN or RIGHT JOIN
2.3 FULL OUTER JOIN or FULL JOIN
3. NATURAL JOIN
4. CROSS JOIN
5. SELF JOIN
Dans ce type de JOIN
, nous obtenons tous les enregistrements qui correspondent à la condition dans les deux tables, et les enregistrements des deux tables qui ne correspondent pas ne sont pas rapportés.
En d'autres termes, le INNER JOIN
est basé sur le seul fait que : SEULS les entrées correspondantes dans les DEUX tables doivent être listées.
Notez qu'un JOIN
sans aucun autre mot-clé JOIN
(comme INNER
, OUTER
, LEFT
, etc) est un INNER JOIN
. En d'autres termes, JOIN
est
un sucre syntaxique pour INNER JOIN
(voir : https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).
OUTER JOIN
permet de récupérer
Soit , les lignes correspondantes d'une table et toutes les lignes de l'autre table. Soit , toutes les lignes de toutes les tables (qu'il y ait ou non une correspondance).
Il existe trois types de jointures externes :
2.1 JOINT EXTERNE GAUCHE ou JOINT GAUCHE
Cette jointure renvoie toutes les lignes de la table de gauche conjointement avec les lignes correspondantes de la table de droite.
de la table de droite. Si aucune colonne ne correspond dans la table de droite, elle renvoie les valeurs NULL
.
**2.2 Jointure extérieure droite ou jointure droite (RIGHT OUTER JOIN ou RIGHT JOIN)
Ce JOIN
renvoie toutes les lignes de la table de droite en conjonction avec les lignes correspondantes de la table de gauche.
de la table de gauche. S'il n'y a pas de colonnes correspondantes dans la table de gauche, elle renvoie des valeurs NULL
.
**2.3 FULL OUTER JOIN ou FULL JOIN (jointure complète)
Ce JOIN
combine le LEFT OUTER JOIN
et le RIGHT OUTER JOIN
. Il renvoie les lignes de l'une ou l'autre table lorsque les conditions sont remplies et renvoie la valeur NULL
lorsqu'il n'y a pas de correspondance.
En d'autres termes, OUTER JOIN
est basé sur le fait que : SEULES les entrées correspondantes dans l'UNE des tables (DROITE ou GAUCHE) ou dans les DEUX tables (COMPLETES) doivent être listées.
Note that `OUTER JOIN` is a loosened form of `INNER JOIN`.
Elle est basée sur les deux conditions suivantes :
JOIN
est faite sur toutes les colonnes ayant le même nom pour l'égalité.Cela semble être plus théorique par nature et par conséquent (probablement) la plupart des SGBD ne prennent pas la peine de le supporter. ne prennent même pas la peine de le supporter.
C'est le produit cartésien des deux tables concernées. Le résultat d'un CROSS JOIN
n'aura pas de sens
dans la plupart des situations. De plus, nous n'en aurons pas du tout besoin (ou le moins besoin, pour être précis).
Il ne s'agit pas d'une forme différente de JOIN
, mais plutôt d'un JOIN
(INNER
, OUTER
, etc) d'une table vers elle-même.
Selon l'opérateur utilisé pour une clause JOIN
, il peut y avoir deux types de JOIN
. Il s'agit de
Equi JOIN
Thêta JOIN
Quel que soit le type de JOIN
(INNER
, OUTER
, etc), si nous utilisons UNIQUEMENT l'opérateur d'égalité (=), alors nous disons que
que le JOIN
est un EQUI JOIN
.
C'est la même chose que EQUI JOIN
mais il permet tous les autres opérateurs comme >, <, >= etc.
De nombreuses personnes considèrent que le EQUI JOIN
et le JOIN
thêta sont similaires aux INNER
, OUTER
, etc.
etc
JOIN
s. Mais je crois fermement que c'est une erreur et que cela rend les idées vagues. Parce queINNER JOIN
,OUTER JOIN
etc. sont tous liés aux tables et à leurs données. aux tables et à leurs données, alors queEQUI JOIN
etTHETA JOIN
sont seulement connectés avec les opérateurs que nous utilisons dans les premiers.Encore une fois, nombreux sont ceux qui considèrent la jointure naturelle comme une sorte de... "particulier" ;
EQUI JOIN
. En fait, c'est vrai, à cause de la première condition que j'ai mentionnée pourNATURAL JOIN
. Cependant, nous n'avons pas besoin de Cependant, nous n'avons pas à nous limiter aux seulsNATURAL JOIN
s. LesJointes internes
, lesJointes externes
, etc. etc. peuvent aussi être desEQUI JOIN
.
Définition:
Les JOINS sont un moyen d'interroger les données qui sont combinées ensemble à partir de plusieurs tables simultanément.
Concernant les SGBDR, il existe 5 types de jointures :
Equi-Join: Combine les enregistrements communs de deux tables sur la base d'une condition d'égalité. Techniquement, la jointure est réalisée en utilisant l'opérateur d'égalité (=) pour comparer les valeurs de la clé primaire d'une table et les valeurs de la clé étrangère d'une autre table, le jeu de résultats comprend donc les enregistrements communs (appariés) des deux tables. Pour la mise en œuvre, voir INNER-JOIN.
Natural-Join: C'est une version améliorée de Equi-Join, dans laquelle l'opération SELECT omet la colonne dupliquée. Pour la mise en œuvre, voir INNER-JOIN
Non-Equi-Join: Il s'agit de l'inverse d'Equi-Join où la condition de jonction est utilisée autre que l'opérateur égal (=), par exemple !=, <=, >=, >, < ou BETWEEN etc. Pour la mise en œuvre, voir INNER-JOIN.
Self-Join: : Un comportement personnalisé de la jointure où une table est combinée avec elle-même ; Ceci est typiquement nécessaire pour interroger des tables auto-référencées (ou une entité de relation unaire). Pour la mise en œuvre, voir INNER-JOINs.
Produit cartésien: Il combine en croix tous les enregistrements des deux tables sans aucune condition. Techniquement, il renvoie le jeu de résultats d'une requête sans clause WHERE.
Selon les préoccupations et les progrès de SQL, il existe 3 types de jointures et toutes les jointures du SGBDR peuvent être réalisées à l'aide de ces types de jointures.
INNER-JOIN: Elle fusionne (ou combine) les lignes correspondantes de deux tables. La correspondance est effectuée sur la base des colonnes communes des tables et de leur opération de comparaison. Si la condition est basée sur l'égalité, alors : EQUI-JOIN est exécuté, sinon Non-EQUI-Join.
OUTER-JOIN: Il fusionne (ou combine) les lignes correspondantes de deux tables et les lignes non correspondantes avec des valeurs NULL. Cependant, il est possible de personnaliser la sélection des lignes non appariées, par exemple en sélectionnant les lignes non appariées de la première table ou de la deuxième table par sous-types : LEFT OUTER JOIN et RIGHT OUTER JOIN.
2.1. JOINTE EXTERNE GAUCHE (alias LEFT-JOIN) : Renvoie les lignes correspondantes de deux tables et les lignes non correspondantes de la table GAUCHE (c'est-à-dire la première table) uniquement.
2.2. RightHT Outer JOIN (alias RIGHT-JOIN) : Renvoie les lignes correspondantes de deux tables et les lignes non correspondantes de la table DROITE uniquement.
2.3. FULL OUTER JOIN (alias OUTER JOIN) : Renvoie les lignes appariées et non appariées des deux tables.
CROSS-JOIN: Cette jointure ne fait pas de fusion/combinaison mais effectue un produit cartésien.
![entrez la description de l'image ici][1] Remarque : L'auto-jonction peut être réalisée par INNER-JOIN, OUTER-JOIN et CROSS-JOIN en fonction des besoins, mais la table doit se joindre à elle-même.
[Pour plus d'informations :][2].
1.1 : INNER-JOIN : Implémentation d'Equi-join
SELECT *
FROM Table1 A
INNER JOIN Table2 B ON A.<Primary-Key> =B.<Foreign-Key>;
1.2 : INNER-JOIN : Mise en oeuvre de Natural-JOIN.
Select A.*, B.Col1, B.Col2 --But no B.ForeignKeyColumn in Select
FROM Table1 A
INNER JOIN Table2 B On A.Pk = B.Fk;
1.3 : INNER-JOIN avec l'implémentation NON-Equi-join.
Select *
FROM Table1 A INNER JOIN Table2 B On A.Pk <= B.Fk;
1.4 : INNER-JOIN avec SELF-JOIN {{1974549}} {1.4 : INNER-JOIN avec SELF-JOIN
Select *
FROM Table1 A1 INNER JOIN Table1 A2 On A1.Pk = A2.Fk;
2.1 : OUTER JOIN (jointure externe complète).
Select *
FROM Table1 A FULL OUTER JOIN Table2 B On A.Pk = B.Fk;
2.2 : LEFT JOIN
Select *
FROM Table1 A LEFT OUTER JOIN Table2 B On A.Pk = B.Fk;
2.3 : JOINT DROIT
Select *
FROM Table1 A RIGHT OUTER JOIN Table2 B On A.Pk = B.Fk;
3.1 : JOINT CROISÉ
Select *
FROM TableA CROSS JOIN TableB;
3.2 : CROSS JOIN-Self JOIN
Select *
FROM Table1 A1 CROSS JOIN Table1 A2;
//OR//
Select *
FROM Table1 A1,Table1 A2;
[1] : http://i.stack.imgur.com/rhqY7.jpg [2] : http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-Sql-JOIN-Operations-INNER-OUTER-CROSS.html