Mots-clés SQL LEFT JOINKeywords

LEFT JOIN est un mot-clé de jointure en SQL utilisé pour extraire des données de plusieurs tables.

La différence entre LEFT JOIN et INNER JOIN est que LEFT JOIN renvoie tous les enregistrements de la table de gauche, même s'il n'y a aucun enregistrement correspondant dans la table de droite.

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 pas de correspondance dans la table de droite, le résultat est NULL.

Syntaxe SQL LEFT JOIN

SELECT column_name(s)
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;

Remarque :Dans certaines bases de données, LEFT JOIN est appelé LEFT OUTER JOIN.

  • table1: table de gauche (table principale),LEFT JOINtous les enregistrements de cette table seront conservés.
  • table2: table de droite (table secondaire), s'il n'y a pas de données correspondantes, utilisezNULLpour remplir les colonnes correspondantes.
  • ON table1.column_name=table2.column_name: spécifiez la condition de jointure, généralement le champ commun des deux tables.

SQL LEFT JOIN

Fonctionnalités :

  • Renvoietous les enregistrements de la table de gauche, même si la table de droite n'a pas de données correspondantes.
  • Si la table de droite n'a pas d'enregistrement correspondant, les champs de la table de droite pour cette ligne dans le résultat serontNULL。

Supposons qu'il y ait deux tables :CustomersetOrders。

Table Customers:

CustomerID Name
1 Alice
2 Bob
3 Charlie
4 David

Table Orders:

OrderID CustomerID Produit
101 1 Ordinateur portable
102 2 Smartphone

Requête utilisant LEFT JOIN :

SELECT Customers.Name, Orders.Product
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;

Résultat de la requête:

Name Produit
Alice Ordinateur portable
Bob Smartphone
Charlie NULL
David NULL

Explication:LEFT JOINrenvoyéCustomerstous les enregistrements de la table. PourCharlieetDavid, car dansOrdersla table, il n'y a pas de correspondanceCustomerID, leurProductcolonne correspondante estNULL。


Base de données de démonstration

Dans ce tutoriel, nous utiliserons la base de données d'exemple EXAMPLE.

Ci-dessous se trouvent les données sélectionnées dans la table "Websites" :

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | Example      | http://www.example.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

Ci-dessous se trouvent les données de la table de journal d'accès du site Web "access_log" :

mysql> SELECT * FROM access_log;
+-----+---------+-------+------------+
| aid | site_id | count | date       |
+-----+---------+-------+------------+
|   1 |       1 |    45 | 2016-05-10 |
|   2 |       3 |   100 | 2016-05-13 |
|   3 |       1 |   230 | 2016-05-14 |
|   4 |       2 |    10 | 2016-05-14 |
|   5 |       5 |   205 | 2016-05-14 |
|   6 |       4 |    13 | 2016-05-15 |
|   7 |       3 |   220 | 2016-05-15 |
|   8 |       5 |   545 | 2016-05-16 |
|   9 |       3 |   201 | 2016-05-17 |
+-----+---------+-------+------------+
9 rows in set (0.00 sec)

Exemple de LEFT JOIN SQL

L'instruction SQL suivante renverra tous les sites web et leur nombre de visites (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
FROM Websites
LEFT JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count DESC;

Après avoir exécuté le SQL ci-dessus, les résultats de sortie sont les suivants :

Remarque :Le mot-clé LEFT JOIN retourne toutes les lignes de la table de gauche (Websites), même s'il n'y a aucune correspondance dans la table de droite (access_log).

Autres extensions