Les jointures

Nous travaillons sur un SGBD relationnel; les tables sont donc en relation, elles disposent d'une clé primaire, et les relations entre elles vont associer la clé primaire d'une des tables concernées avec un champ de même nature d'une autre table; ce dernier champ est appelé clé étrangère ou clé secondaire. L'intérêt du modèle relationnel n'est plus à démontrer, et nous allons en avoir un aperçu de suite.

On pourrait penser que l'expression suivante suffirait:

SELECT nom, prenom, titre FROM auteur, livre

Jointures simples

Une telle requête sans restriction entraîne un produit cartésien ce qui se traduit par un très grand nombre de lignes qui ne présente pas un grand intérêt. Concrètement on associe en procédant ainsi chaque auteur à chaque livre. Le nombre de lignes est alors égal au nombre d'auteur que multiplie le nombre de livres...Comme si tous les ouvrages avaient été écrits par chaque auteur...Il est évident qu'il faut exprimer des restrictions: les deux tables contiennent un champ commun: id_auteur, qui est clé primaire de la table auteur, et qui devient clé étrangère de la table livre. Ces deux colonnes sont de même nature, et on va demander l'affichage des noms prénoms de la table auteur, et titres de la table livre uniquement pour les enregistrements de ces deux tables qui ont un les même valeurs dans ce champ commun: id_auteur. La clause WHERE va nous permettre d'y arriver.

SELECT nom, prenom, titre , auteur.id_auteur, livre.id_auteur FROM auteur, livre WHERE (auteur.id_auteur=livre.id_auteur)