Aller au contenu

TP⚓︎

Objectif du TP

travailler sur la manipulation des données à l'aide d'un langage de requêtes AVEC Jointure.

gif

Télécharger fichier Création de la base ⬇️

Crédit

Adaptation d'un TP SIO de Stéphane Guyon

Schéma conceptuel "en intention" :⚓︎

REALISATEUR (idrealisateur, nom, prenom, date_naissance, #nation)
FILM (idFilm, titre, annee, genre, sortie, recettes, idrealisateur, "idnation")
NATION (idnation, )

Modèle Physique des données⚓︎

MPD

Q1

afficher le titre des films réalisés par George Lucas.

🐬 SQL
SELECT Film.titre, Realisateur.nom
FROM Film INNER JOIN Realisateur
ON Film.idrealisateur = Realisateur.idrealisateur
WHERE Realisateur.nom = 'Lucas';

Q2

afficher le titre et le nom des réalisateurs des films « Harry Potter »

🐬 SQL
SELECT Film.titre, Realisateur.nom
FROM Film INNER JOIN Realisateur
ON Film.idrealisateur = Realisateur.idrealisateur
WHERE Film.titre LIKE 'Harry%';

Q3

afficher le nombre de film par nation

🐬 SQL
SELECT COUNT(*) as nombre, nation.nation
FROM Film INNER JOIN Realisateur
ON Film.idrealisateur = Realisateur.idrealisateur
INNER JOIN nation
ON realisateur.nation = nation.idnation
GROUP BY nation.idnation

Q4

afficher le titre et le nom du réalisateur du film réalisé par le réalisateur mexicain

🐬 SQL
SELECT Film.titre, Realisateur.nom
FROM Film INNER JOIN Realisateur
    ON Film.idrealisateur = Realisateur.idrealisateur
    INNER JOIN nation
    ON realisateur.nation = nation.idnation
HERE nation.nation = 'Mexique'

Q5

afficher les différentes nationalité des réalisateurs

🐬 SQL
SELECT DISTINCT nation.nation
FROM nation INNER JOIN realisateur
ON nation.idnation = realisateur.nation ;
note : la jointure est ici obligatoire. On ne doit afficher que les nations ayant des réalisateurs. Or dans la base, le canada n'a pas de réalisateur associé, il ne doit donc pas apparaître.

Q6

Qui est le réalisateur du film « 2012 » ?

🐬 SQL
SELECT Film.titre, Realisateur.nom
FROM Film INNER JOIN Realisateur
ON Film.idrealisateur = Realisateur.idrealisateur
WHERE Film.titre = '2012';

Q7

afficher le nom et la date de naissance des réalisateurs qui ont moins de 55 ans . ( essayer dans un premier temps de trouver comment afficher l'année en cours)

🐬 SQL
SELECT Realisateur.nom
FROM Realisateur
WHERE ( YEAR(NOW()) - YEAR(Realisateur.date_naissance) ) <= 55;

Q8

afficher les réalisateurs et la somme des recettes générées par leurs films classés par ordre décroissant des recettes ?

🐬 SQL
SELECT SUM(Film.recettes) as recettes, Realisateur.nom
FROM Film INNER JOIN Realisateur
ON Film.idrealisateur = Realisateur.idrealisateur
GROUP BY Realisateur.nom
ORDER BY recettes DESC