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 au format texte
- 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 MLD sous forme d'un schéma
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;