JOINTURE GAUCHE SQL
Mot-clé SQL LEFT JOIN
Le mot-clé LEFT JOIN renvoie toutes les lignes de la table de gauche (table1) même s'il n'y a aucune correspondance dans la table de droite (table2). S'il n'y a aucune correspondance dans le bon tableau, le résultat est NULL.
Syntaxe SQL LEFT JOIN
SELECT nom_colonne(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
ou :
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2 .column_name;
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2 .column_name;
Remarque : Dans certaines bases de données, LEFT JOIN est appelé LEFT OUTER JOIN.
Base de données de démonstration
Dans ce tutoriel, nous utiliserons un exemple de base de données php.
Voici les données sélectionnées dans le tableau "Sites Web" :
+----+--------------+-- - --------------+------+---------+
| identifiant | | url | | États-Unis
| 2 | Taobao | https://www.taobao.com/ | |
| Weibo | http://weibo.com/ |
| | stackoverflow | http://stackoverflow.com/ | 0 |
+----+--------------+--------- - ----------------+------+---------+
Exemple SQL LEFT JOINL'instruction SQL suivante sera renvoie tous les sites Web et leur volume de trafic (le cas échéant). Dans l'exemple suivant, nous utilisons Websites comme table de gauche et access_log comme table de droite :
| identifiant | | url | | États-Unis
| 2 | Taobao | https://www.taobao.com/ | |
| Weibo | http://weibo.com/ |
| | stackoverflow | http://stackoverflow.com/ | 0 |
+----+--------------+--------- - ----------------+------+---------+
Voici les données de la table d'enregistrement d'accès au site Web "access_log" :
mysql> SELECT * FROM access_log;
+-----+------ --- +-------+------------+
| aide site_id | compte date |
+-----+--- --- ---+-------+------------+
| 1 | 45 | 2016-05-10 |
| 3 | 100 | 2016-05-13 |
| 3 | 2016-05-14 |
| 4 | 2016-05-14 |
| | 2016-05-14 |
| 6 | 13 | 2016-05-15 |
| -05 -16 |
| 9 | 201 | 2016-05-17 |
+-----+---------+------+- -- ---------+
9 lignes dans l'ensemble (0,00 sec)
+-----+------ --- +-------+------------+
| aide site_id | compte date |
+-----+--- --- ---+-------+------------+
| 1 | 45 | 2016-05-10 |
| 3 | 100 | 2016-05-13 |
| 3 | 2016-05-14 |
| 4 | 2016-05-14 |
| | 2016-05-14 |
| 6 | 13 | 2016-05-15 |
| -05 -16 |
| 9 | 201 | 2016-05-17 |
+-----+---------+------+- -- ---------+
9 lignes dans l'ensemble (0,00 sec)
Exemple SQL LEFT JOINL'instruction SQL suivante sera renvoie tous les sites Web et leur volume de trafic (le cas échéant). Dans l'exemple suivant, nous utilisons Websites comme table de gauche et access_log comme table de droite :
Exemple
SELECT Websites.name, access_log.count, access_log.date
À PARTIR DE sites Web
REJOIGNEZ À GAUCHE access_log
SUR Websites.id=access_log.site_id
ORDER BY access_log.count DESC;
Le résultat de l'exécution du SQL ci-dessus est le suivant : REJOIGNEZ À GAUCHE access_log
SUR Websites.id=access_log.site_id
ORDER BY access_log.count DESC;
Remarque : LEFT JOIN password Renvoie toutes les lignes de la table de gauche (Sites Web) même s'il n'y a aucune correspondance dans la table de droite (access_log).