Exercice SQL corrigé gestion bibliothèque (Jointures)

En face de chaque titre d’ouvrage, afficher le nom et prénom de son auteur.

 
SELECT titre, nom, prenom
FROM livres, auteurs
WHERE livres.idauteur = auteurs.idauteur
ORDER BY titre ASC;

-- on aurait obtenu le même résultat avec la jointure interne suivante:

SELECT titre, nom, prenom
FROM livres JOIN auteurs USING (idauteur)
ORDER BY titre ASC;

Afficher le nom et le prénom des emprunteurs suivi de la date de ses emprunts.

 
SELECT nom, prenom, datepret
FROM emprunteurs, emprunts
WHERE emprunteurs.idemprunteur = emprunts.idemprunteur;

-- on aurait obtenu le même résultat avec la jointure interne suivante:

SELECT nom, prenom, datepret
FROM emprunteurs JOIN emprunts USING(idemprunteur);

Affichez le titre et l’auteur des ouvrages empruntés suivi du nom de leur emprunteur

 

SELECT titre, auteurs.nom, emprunteurs.nom
FROM livres, auteurs, emprunteurs, emprunts
WHERE emprunts.idlivre = livres.idlivre
AND emprunts.idemprunteur = emprunteurs.idemprunteur
AND livres.idauteur = auteurs.idauteur;

A la suite de problèmes de saisie informatique, il existe un certain nombre d’emprunts sans emprunteurs. Affichez l’identifiant de tous les emprunts suivi du nom de l’emprunteur qu’il y en ait un ou non

SELECT idemprunt, nom
FROM emprunts LEFT OUTER JOIN emprunteurs USING(idemprunteur)
ORDER BY idemprunt ASC;

Afficher la liste des emprunts suivi de l’identifiant de l’emprunteur seulement s’il y a un emprunteur, mais aussi comprenant les emprunteurs n’ayant pas encore effectué d’emprunts.

SELECT idemprunt, idemprunteur
FROM emprunts RIGHT OUTER JOIN emprunteurs USING(idemprunteur)
ORDER BY idemprunteur ASC;

Afficher la liste des emprunts et des emprunteurs que les emprunts n’ai pas d’emprunteurs ou que les emprunteurs n’ai jamais effectué d’emprunts.

SELECT idemprunt, idemprunteur
FROM emprunts FULL OUTER JOIN emprunteurs USING(idemprunteur)
ORDER BY idemprunteur ASC;

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *