On considère une base de données filmographie qui recense des acteurs , leurs films et les rôles qu’ils y ont joué. Les trois tables suivantes sont un extrait de cette base de données: BDD_film.PNG1er temps : Déterminer dans quels films joue l’acteur Omar Sy ? Expliquer la démarche.2ème temps : requête SQL sur 2 tables On donne un fichier filmographie.db sur lequel on va effectuer des requêtes en SQL. On donne ici la requête SQL fournissant les Id_film des films dans lesquels joue Omar Sy
SELECT id_film FROM jouer JOIN acteur ON id_acteur =id_act WHERE (nom, prenom)=("Sy","Omar");
consigne élèves : Exécuter cette requête puis s’en inspirer pour déterminer les titres de films dans lesquels apparaissent Omar Sy. Essayer plusieurs syntaxes différentes.
On donne ici plusieurs syntaxes possibles d’élèves . Les commenter.
syntaxe 1 :
SELECT id_film FROM jouer JOIN acteur ON id_acteur = id_act WHERE (nom,prenom) = ("Sy","Omar");
SELECT titre FROM film WHERE id_film in (1,5,8);
syntaxe 2 :
SELECT DISTINCT titre FROM film JOIN jouer ON film.id_film =jouer.id_film WHERE jouer.id_film =1 OR jouer.id_film =8 or jouer.id_film =5
syntaxe 3 :
SELECT DISTINCT titre FROM film JOIN jouer ON film.id_film =jouer.id_film WHERE jouer.id_film in (1,5,8);
syntaxe 4 :
SELECT DISTINCT titre FROM film JOIN jouer ON film.id_film =jouer.id_film WHERE jouer.id_film in (SELECT id_film FROM jouer JOIN acteur ON id_acteur =id_act WHERE (nom, prenom)=("Sy","Omar"));
syntaxe 5 :
SELECT titre FROM film JOIN jouer JOIN acteur ON film.id_film = jouer.id_film AND id_act = id_acteur WHERE (nom,prenom)=("Sy","Omar");
remarque : Lorsqu’on réalise une jointure entre deux tables qui possèdent un attribut commun, on peut occulter le ON en écrivant NATURAL JOIN ; on dit alors que la jointure est naturelle.
SELECT DISTINCT titre FROM film NATURAL JOIN jouer WHERE jouer.id_film in (1,5,8);
Exercice : En faisant la jointure sur 2 tables , déterminer :
les rôles joués par Audrey Tautou
en quelles années sont sortis des films dont un rôle est Samuel ?
La base filmographie.db contient aussi une table réalisateur(id_rea,nom,prenom,age).La clé primaire est id-rea et id_film est une clé étrangère pointant vers l'attribut de même nom de la table film.Pour des questions de simplifications, en cas de plusieurs réalisateurs d’un même film, un seul nom a été inscrit dans la base.
quels sont les titres de films réalisés par Jean-Pierre Jeunet ?
3ème temps : Inventer des requêtes nécessitant trois tables. Les écrire et les tester. 4ème temps : utilisation de fonctions d’agrégation
Compter le nombre de films dans lesquels Clovis Cornillac a joué
Dénombrer les films dans lesquels un rôle de capitaine est joué
Déterminer le film le plus long dans lequel Audrey Fleurot a joué.
Combien en moyenne durent les films dans lesquels Audrey Tautou a joué ? Pour les deux dernières requêtes, on pourra s’aider de https://www.sqltutorial.org/sql-limit/