Question Quelle est la différence entre INNER JOIN, LEFT JOIN, RIGHT JOIN et FULL JOIN? [dupliquer]


Cette question a déjà une réponse ici:

Quelle est la différence entre INNER JOIN, LEFT JOIN, RIGHT JOIN et FULL JOIN  dans MySQL?


1201
2018-04-18 17:15


origine


Réponses:


Lire cet article original sur Le projet de code vous aidera beaucoup: Représentation visuelle des jointures SQL.

alt text

Vérifiez également ce post: SQL SERVER - Meilleure performance - LEFT JOIN ou NOT IN?.

Trouver l'original à: Différence entre JOIN et OUTER JOIN dans MySQL.


2491
2018-05-31 13:29



JOINTURE INTERNE obtient tous les enregistrements qui sont communs entre les deux tables en fonction de la clé étrangère

JOINT GAUCHE récupère tous les enregistrements de la table liée GAUCHE mais si vous avez sélectionné des colonnes de la table RIGHT, s'il n'y a pas d'enregistrements associés, ces colonnes contiendront NULL

DROIT JOIN est comme ci-dessus mais obtient tous les enregistrements dans la table DROITE

COMPLET obtient tous les enregistrements des deux tables et place NULL dans les colonnes où les enregistrements liés n'existent pas dans la table opposée


530
2018-04-18 20:28



Une clause SQL JOIN est utilisée pour combiner des lignes de deux tables ou plus,   basé sur un domaine commun entre eux.

Il existe différents types de jointures disponibles dans SQL:

JOINTURE INTERNE: renvoie des lignes lorsqu'il y a une correspondance dans les deux tables.

JOINT GAUCHE: renvoie toutes les lignes de la table de gauche, même s'il n'y a pas de correspondance dans la table de droite.

DROIT JOIN: renvoie toutes les lignes de la table de droite, même s'il n'y a pas de correspondance dans la table de gauche.

COMPLET: Il combine les résultats des jointures externes gauche et droite.

La table jointe contiendra tous les enregistrements des deux tables et remplira les valeurs NULL pour les correspondances manquantes de chaque côté.

SELF JOIN: est utilisé pour joindre une table à lui-même comme si la table était deux tables, en renommant temporairement au moins une table dans l'instruction SQL.

CARTESIAN JOIN: renvoie le produit cartésien des ensembles d'enregistrements des deux tables jointes ou plus.

Nous pouvons prendre chacune des quatre premières jointures dans Détails:

Nous avons deux tables avec les valeurs suivantes.

TableA

id  firstName                  lastName
.......................................
1   arun                        prasanth                 
2   ann                         antony                   
3   sruthy                      abc                      
6   new                         abc                                           

TableB

id2 age Place
................
1   24  kerala
2   24  usa
3   25  ekm
5   24  chennai

.................................................. ..................

JOINTURE INTERNE

Remarque : il donne l'intersection des deux tables, c'est-à-dire les lignes qu'ils ont en commun dans les tableaux A et B

Syntaxe

SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;

Appliquez-le dans notre tableau d'échantillons:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
INNER JOIN TableB
ON TableA.id = TableB.id2;

Le résultat sera

firstName       lastName       age  Place
..............................................
arun            prasanth        24  kerala
ann             antony          24  usa
sruthy          abc             25  ekm

JOINT GAUCHE

Remarque : donnera toutes les lignes sélectionnées dans TableA, plus toutes les lignes sélectionnées communes dans TableB.

Syntaxe

SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;

Appliquez-le dans notre tableau d'échantillons:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
LEFT JOIN TableB
ON TableA.id = TableB.id2;

Résultat

firstName                   lastName                    age   Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL

DROIT JOIN

Remarque : donnera toutes les lignes sélectionnées dans la TableB, plus toutes les lignes sélectionnées communes dans la TableA.

Syntaxe

SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;

Appliquez-le dans notre tableau d'échantillons:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
RIGHT JOIN TableB
ON TableA.id = TableB.id2;

Résultat

firstName                   lastName                    age     Place
...............................................................................
arun                        prasanth                    24     kerala
ann                         antony                      24     usa
sruthy                      abc                         25     ekm
NULL                        NULL                        24     chennai

COMPLET

Remarque : Il va retourner toutes les valeurs sélectionnées des deux tables.

Syntaxe

SELECT table1.column1, table2.column2...
FROM table1
FULL JOIN table2
ON table1.common_field = table2.common_field;

Appliquez-le dans notre tableau d'échantillons:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
FULL JOIN TableB
ON TableA.id = TableB.id2;

Résultat

firstName                   lastName                    age    Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL
NULL                        NULL                        24    chennai

Fait intéressant

Pour INNER rejoint la commande n'a pas d'importance

Pour les jointures OUTER (GAUCHE, DROITE ou FULL), l'ordre importe

Mieux vaut aller voir ça Lien il vous donnera des détails intéressants sur l'ordre de rejoindre


493
2018-02-25 12:40