Requêtes avec jointures
Nous allons utiliser la base de données « bibliotheque »
remarque
Si vous n'avez pas créé la base de données « bibliotheque » veuillez consulter le tutoriel Premières requêtes
Écrire des requêtes SQL pour répondre aux questions que se pose la documentaliste.
Voici le MCD
A partir du schéma « Modèle Conceptuel de Données » MCD représenté ci-dessus, écrire les requêtes SQL pour répondre aux questions suivantes.
Voici le MLD
- AUTEURS (idauteur, nom, prenom, datenaiss, datedeces, bibliographie, #idlivre)
- EDITEURS (idediteur, nom, adresse, code, ville, pays, telephone, fax, #idlivre)
- EMPRUNTEURS (idemprunteur, nom, prenom, adresse, code, ville, telephone, sexe, datenaiss, nbretards)
- EMPRUNTS (idemprunt, datepret, daterendu, #idlivre, #idemprunteur)
- LIVRES (idlivre, isbn, titre, nbpages, dateparu, prix, theme, format)
Voici le MPD
1. Comment afficher les titres des livres avec les prénoms et noms de leurs auteurs ?
Une solution
select livres.titre, auteurs.prenom, auteurs.nom from livres
join auteurs on livres.idauteur = auteurs.idauteur;
2. Comment afficher les titres des livres avec les prénoms et noms de leurs auteurs et le nom de l’éditeur ?
Une solution
select livres.titre, auteurs.prenom, auteurs.nom, editeurs.nom from livres
join auteurs on livres.idauteur = auteurs.idauteur
join editeurs on livres.idediteur = editeurs.idediteur;
3. Comment afficher les titres des livres avec les prénoms et noms de leurs emprunteurs ?
Une solution
select livres.titre, emprunteurs.prenom, emprunteurs.nom
from livres
join emprunts on livres.idlivre = emprunts.idlivre
join emprunteurs on emprunts.idemprunteur = emprunteurs.idemprunteur;
4. Comment afficher les titres des livres avec les prénoms et noms de leurs auteurs et le nom de l’éditeur et les prénoms et noms de leurs emprunteurs ?
Une solution
select livres.titre,
auteurs.prenom, auteurs.nom,
editeurs.nom, emprunteurs.prenom, emprunteurs.nom
from livres
join auteurs on livres.idauteur = auteurs.idauteur
join editeurs on livres.idediteur = editeurs.idediteur
join emprunts on livres.idlivre = emprunts.idlivre
join emprunteurs on emprunts.idemprunteur = emprunteurs.idemprunteur;
5. Comment afficher la liste des emprunteurs (nom et prénom) qui ont emprunté des livres après le 1er Octobre 2019 ?
Une solution
select emprunteurs.nom, emprunteurs.prenom from emprunteurs
join emprunts on emprunteurs.idemprunteur = emprunts.idemprunteur
where emprunts.datepret > '2019-10-01';
6. Comment afficher la liste des livres (titre) qui n'ont jamais été empruntés ?
Une solution
select livres.titre from livres
left join emprunts on livres.idlivre = emprunts.idlivre
where emprunts.idlivre is null;