Principe et requête SQL

Exemple : Table IRIS (extrait) et table des COMMUNES

Exemple de jointure attributaire

On recherche pour chaque IRIS le nom de la commune d'appartenance. Ce nom n'est pas dans la table IRIS_extrait72, mais il existe dans la table COMMUNE.

La solution est donc d'établir un lien (une jointure) entre les deux tables afin que pour chaque enregistrement de la table IRIS_extrait72 on retrouve le nom de la commune dans la table COMMUNE.

Une analyse des tables IRIS_extrait72 et COMMUNE permet de voir que DepCom représente le N° INSEE de la commune d'appartenance dans la table IRIS_extrait72. On retrouve ce N°INSEE dans le champ INSEE_COMM de la table COMMUNE. Le lien peut donc s'établir par égalité des ces colonnes ce que l'on écrira :

1
iris_extrait72.depcom = commune.insee_comm

C'est ce que l'on appelle la condition de jointure.

Remarque

Lorsqu'on utilise plusieurs tables, il devient nécessaire s'il y a risque d'ambiguïté de préciser le nom de la table devant le nom des colonnes sous la forme NomTable.NomColonne d'où par exemple commune.insee_comm.

Lorsqu'on réalise une jointure attributaire entre deux tables (deux noms de tables après le from) il faut retenir qu'en général il faut une condition de jointure qui sera une égalité de champ.

La requête pourrait être la suivante (on ne retient que certains champs) :

1
SELECT depcom , nom_iris, insee_comm, nom_comm 
2
FROM iris_extrait72, commune 
3
WHERE depcom = insee_comm;

Ici il n'y a pas d'ambiguïté sur les noms de colonnes et on peut ne pas utiliser la notation NomTable.NomColonne

Principe de jointure attributaire

La table résultat est une table qui a le même nombre d'enregistrements que la table iris_extrait72 dans laquelle on récupère le nom des communes de la table commune.

Complément

On peut également utiliser une syntaxe normalisée qui est dans ce cas strictement équivalente :

1
SELECT <colonnes> 
2
FROM <table1> JOIN <table2> ON <condition de jointure>;

dans notre exemple cela donne :

1
SELECT depcom, nom_iris, insee_comm, nom_comm 
2
FROM iris_extrait72 JOIN commune ON iris_extrait72.depcom = insee_comm;

JOIN est équivalent à INNER JOIN (jointure interne), mais il existe plusieurs types de jointures, à adapter selon les besoins, dont les principales sont résumées dans le tableau ci-contre.

SQL autorise beaucoup de subtilité dans les types de jointures, on pourra par exemple consulter Le SQL de A à Z sur les jointures.