SQL INNER JOINMots-clés

INNER JOIN est l'une des méthodes de jointure les plus couramment utilisées en SQL, utilisée pour extraire des enregistrements correspondants de plusieurs tables en fonction de leurs relations.

Le mot-clé INNER JOIN renvoie des lignes lorsqu'il y a au moins une correspondance dans les tables. Il renvoie l'intersection des deux tables qui satisfait la condition de jointure, c'est-à-dire les données qui existent dans les deux tables.

Syntaxe de SQL INNER JOIN

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

Ou :

SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;

Description du paramètre :

  • columns : Les noms des colonnes à afficher.
  • table1 : Le nom de table1.
  • table2 : Le nom de table2.
  • column_name : Le nom de colonne utilisé pour la jointure dans les tables.

Remarque :INNER JOIN est identique à JOIN.

SQL INNER JOIN

Supposons qu'il y ait deux tables : Students et Enrollments.

Table Students:

StudentIDNameÂge
1Alice22
2Bob23
3Charlie24

Table Enrollments:

EnrollmentIDStudentIDCourse
1011Math
1022Science
1034Historique

Requête utilisant INNER JOIN

SELECT Students.Name, Enrollments.Course
FROM Students
INNER JOIN Enrollments
ON Students.StudentID = Enrollments.StudentID;

Le résultat est le suivant :

NameCourse
AliceMath
BobScience

Explication:INNER JOINCe qui est renvoyéStudentsetEnrollmentsdes tablesStudentIDest constitué des données correspondantes. Les enregistrements sans correspondance (comme Charlie et l'enregistrement avec EnrollmentID 103) seront exclus.


Base de données de démonstration

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

Voici 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 des enregistrements d'accès au 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 d'INNER JOIN SQL

L'instruction SQL suivante renverra les enregistrements d'accès de tous les sites Web :

Exemple

SELECT Websites.name, access_log.count, access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count;

L'exécution de la requête SQL ci-dessus produit les résultats suivants :

Remarque :Le mot-clé INNER JOIN renvoie des lignes lorsqu'il y a au moins une correspondance dans les tables. Si une ligne de la table "Websites" n'a pas de correspondance dans "access_log", ces lignes ne seront pas listées.

Autres extensions