Les jointures en SQL

Les jointures en SQL#

On redonne le modèle relationnel utilisé pour notre base de données livres.db.

image

Dans la première partie, nous avons réalisé des requêtes SQL sur une relation à chaque fois.

On poursuit notre travail sur le notebook commencé dans l’activité précédente.

Comment obtenir les données issues de plusieurs relations ? Pour ce faire, on réalise des jointures en utilisant les clés étrangères.

La clause JOIN --- ON ... réalise cette jointure en remplaçant les trois tirets par la relation à joindre et les trois points par une égalité entre les clefs étrangères liant les deux relations.

Exemple

SELECT attributs FROM TableA Join TableB ON TableA.cle1 = TableB.cle2 WHERE Selecteur
  1. On va interroger notre base pour recueillir les titres de romans et les noms de leur auteur.

    1. Écrire une requête SQL qui recueille les attributs titre et id_auteur de la relation livre, ordonnés selon la clé étrangère id_auteur par ordre croissant.

    2. Écrire une requête SQL qui recueille les auteurs ordonnés par ordre croissant.

      Si vos requêtes sont correctes, vous obtenez les résultats suivants :

      image

      On peut donc relier ces informations avec la clé étrangère id_auteur.

    3. Recopier dans une cellule de votre feuille de travail sql la requête suivante pour effectuer la jointure en SQL:

      image
  2. Écrire les requêtes SQL suivantes en effectuant une jointure:

    1. Recueillir le titre du roman, le nom de l’auteur et sa date de naissance.

    2. Recueillir le titre du roman, le nom de l’auteur et sa date de naissance pour les auteurs nés après 1918.

    3. Recueillir le nombre d’enregistrements de la requête précédente.

    4. Recueillir le titre et la langue d’écriture du roman.

    5. Recueillir les titres de romans écrits en français.

    6. Recueillir les titres de romans écrits en anglais publiés avant 1950.

  3. Donner un exemple qui nécessite de joindre plusieurs relations entre elles.

  4. On veut recueillir le nom et la langue d’écriture de l’auteur.

    1. Compléter la requête SQL suivante:

      image
    2. Exécuter cette requête dans votre feuille de travail sql. Que remarquez-vous ?

    3. La clause DISTINCT placée juste après la clause SELECT évite les doublons. Corriger votre requête SQL.

  5. On veut recueillir les genres de chaque roman.

    1. Compléter la requête SQL suivante:

      image
    2. Exécuter cette requête dans votre feuille de travail sql.

    3. Que se passe-t-il si les relations sont écrites dans un ordre différent?

  6. Écrire les requêtes SQL suivantes:

    1. Recueillir les auteurs qui ont écrit leurs romans en français.

    2. Recueillir les titres de romans anglais, les noms et les prénoms de leur auteur.

    3. Recueillir les titres de romans anglais, l’année de publication, les noms et les prénoms de leur auteur publiés entre 1960 et 1970 rangés du plus récent au plus ancien.

    4. Recueillir les titres de roman d’anticipation.

    5. Recueillir les titres et les genres des romans de Philip K.Dick.

    6. Recueillir les noms et prénoms des auteurs et les titres de romans dystopiques anglais.