2nd Dec 2022 6 minutes de lecture Guide illustré du SQL INNER JOIN Dorota Wdzięczna join bases du sql Clauses SQL Table des matières Qu'est-ce qu'une INNER JOIN ? Comment fonctionne une INNER JOIN JOIN ou INNER JOIN ? Joindre avec WHERE Utilisation d'un INNER JOIN sur plusieurs tables INNER JOIN vs. CROSS JOIN En savoir plus sur les INNER JOINs Qu'est-ce qu'un INNER JOIN SQL, et comment fonctionne-t-il ? Nous allons le découvrir ! Dans mon dernier article, j'ai abordé la question du Opération CROSS JOIN en SQL. Aujourd'hui, nous allons nous intéresser à INNER JOIN et à la façon de l'utiliser. Est-ce la même chose qu'un JOIN? Combien de tables peut-on relier avec un INNER JOIN? Ce sont toutes de bonnes questions. Voyons les réponses ! Qu'est-ce qu'une INNER JOIN ? INNER JOIN combine les données de plusieurs tables en les joignant sur la base d'un enregistrement correspondant. Ce type de jointure nécessite une condition de jointure, que nous allons expliquer dans un instant. Pour illustrer le fonctionnement de INNER JOIN, nous allons utiliser quelques tableaux simples. Deux d'entre eux, color et shoes sont présentés ci-dessous : color id name 1 yellow 2 green 3 pink shoes id size color_id 1 seven 2 2 eight 2 3 nine 2 4 seven 1 5 nine 1 6 seven 3 7 ten NULL La table color stocke un numéro d'identification et un nom pour chaque couleur. La table shoes table stocke un numéro d'identification pour chaque paire de chaussures, la taille de la chaussure et un numéro d'identification qui fait référence à une couleur dans la table. color table. Comment fonctionne une INNER JOIN Dans cet exemple, INNER JOIN joint les enregistrements de la table shoes avec les enregistrements de la table color en passant par la colonne color_id de la table shoes de la table. Les valeurs de cette colonne sont les mêmes que celles de la colonne id de la table. color de la table, ce qui permet d'obtenir le jeu de résultats escompté. Jetez un coup d'œil à la requête suivante : SELECT * FROM shoes INNER JOIN color ON color.id = shoes.color_id; L'instruction SELECT prend tous les enregistrements de la table indiquée après la clause FROM - dans ce cas, la table shoes dans ce cas. Ensuite, l'instruction INNER JOIN contient le nom de la table avec laquelle nous souhaitons faire correspondre les enregistrements (c'est-à-dire la table color table). Le prédicat ON énonce la condition de correspondance, que les enregistrements des deux tables doivent avoir. Ici, la condition est que le champ id de la table color et le champ color_id de la table shoes doivent avoir des valeurs correspondantes. Si un enregistrement ne présente pas de correspondance, il ne sera pas pris en compte dans les résultats. Regardez l'ensemble des résultats de cette requête : id size color_id id name 1 seven 2 2 green 2 eight 2 2 green 3 nine 2 2 green 4 seven 1 1 yellow 5 nine 1 1 yellow 6 seven 3 3 pink Nous pouvons maintenant voir la couleur de chaque paire de chaussures, grâce au champ INNER JOIN. shoes l'enregistrement avec NULL dans la colonne color_id n'est pas affiché : il ne correspond à aucun enregistrement de la table. color tableau. JOIN ou INNER JOIN ? Vous pouvez omettre la partie INNER de INNER JOIN; JOIN fonctionne de la même manière. Regardez l'instruction ci-dessous. SELECT * FROM shoes JOIN color ON color.id = shoes.color_id; Joindre avec WHERE Vous pouvez également utiliser une clause WHERE comme une INNER JOIN. (Il s'agit d'une ancienne version de la syntaxe SQL (ANSI-89) ; les commandes JOIN utilisent ANSI-92). Voici comment fonctionne l'utilisation d'une WHERE: SELECT * FROM shoes, color WHERE color.id = shoes.color_id ; Le résultat est le même : id size color_id id name 1 seven 2 2 green 2 eight 2 2 green 3 nine 2 2 green 4 seven 1 1 yellow 5 nine 1 1 yellow 6 seven 3 3 pink Utilisation d'un INNER JOIN sur plusieurs tables INNER JOIN peut être utilisé sur plus de deux tables. Regardez les trois tables ci-dessous : color id name 1 yellow 2 green 3 pink material id name 1 leather 2 cotton 3 NULL shoes id size color_id material_id 1 seven 2 1 4 seven 1 2 5 nine 1 1 6 seven 3 NULL 7 ten NULL 1 Utilisons un INNER JOIN pour combiner les informations dans les trois tables. La requête ci-dessous récupère les enregistrements de toutes les chaussures qui contiennent des informations sur la couleur et le matériau : SELECT * FROM shoes JOIN color ON color.id = shoes.color_id JOIN material ON material.id = shoes.material_id ; Remarquez que seules les chaussures dont les colonnes color_id et material_id ne contiennent pas d'enregistrementsNULL sont affichées dans le jeu de résultats. id size color_id material_id id name id name 1 seven 2 1 2 green 1 leather 4 seven 1 2 1 yellow 2 cotton 5 nine 1 1 1 yellow 1 leather INNER JOIN vs. CROSS JOIN Comme nous l'avons vu, INNER JOIN combine les informations de deux ou plusieurs enregistrements dont les champs correspondent. Que se passe-t-il lorsque vous utilisez CROSS JOIN pour joindre les champs shoes et color CROSS JOIN ne prend aucune condition de ON, ce qui signifie qu'il renvoie un produit cartésien. Examinez la requête et l'ensemble de résultats présentés ci-dessous : SELECT * FROM shoes CROSS JOIN color ; Le résultat ? id size color_id id name 1 seven 2 1 yellow 2 eight 2 1 yellow 3 nine 2 1 yellow 4 seven 1 1 yellow 5 nine 1 1 yellow 6 seven 3 1 yellow 7 ten NULL 1 yellow 1 seven 2 2 green 2 eight 2 2 green 3 nine 2 2 green 4 seven 1 2 green 5 nine 1 2 green 6 seven 3 2 green 7 ten NULL 2 green 1 seven 2 3 pink 2 eight 2 3 pink 3 nine 2 3 pink 4 seven 1 3 pink 5 nine 1 3 pink 6 seven 3 3 pink 7 ten NULL 3 pink Tous les enregistrements de la table shoes ont été joints à tous les enregistrements de la table color table. Cela crée quelques erreurs. Par exemple, certaines chaussures ne sont pas répertoriées avec la bonne couleur : les chaussures de taille huit ne sont disponibles qu'en vert (leur valeur color_id est 2), mais dans cette instance de jointure, elles sont associées à d'autres couleurs. Les enregistrements NULL de la table shoes sont également associés à des couleurs, même s'ils n'ont pas de valeur comparable dans le champ color_id. En savoir plus sur les INNER JOINs INNER JOINsont assez courantes en SQL. L'objectif de cet article était de présenter les concepts de INNER JOIN, mais il y a encore beaucoup à apprendre. Pourquoi ne pas consulter le site LearnSQL SQL pour les débutants cours pour en savoir plus ? Tags: join bases du sql Clauses SQL