Vous êtes sur la page 1sur 5

TP1 SQL B2 YNOV

Florent PRADEL

Les requêtes sont a exécutées sur le site : http://www-inf.it-


sudparis.eu/cours/bd/docs/r201/EnvironnementFilm.html

Soit une base de données de films et d'informations sur ces films (acteurs, réalisateurs, ...). Le schéma
relationnel de cette base est décrit ci-dessous :

 films (id, titre, annee, score, nbvotant, idrealisateur)


 acteurs (id, nom)
 distributions (idfilm, idacteur, rang)
 realisateurs(id, nom)

Un film est décrit de manière unique par un identifiant (entier, clé de la relation), un titre, une année (première
sortie du film), un score (moyenne de tous les votes pour ce film), un nombre de votants et un réalisateur (entier,
clé étrangère sur réalisateurs).

Un acteur est décrit de manière unique par un identifiant (entier, clé de la relation) et un nom.

Un acteur peut jouer un rôle dans zéro ou plusieurs films et un film à zéro ou plusieurs acteurs dans sa
distribution. L'attribut rang indique le statut de l'acteur dans le film (rang=1 indique que l'acteur est la vedette du
film). Le couple (idacteur, idfilm) est la clé de la relation distributions. idacteur est une clé étrangère sur acteurs et
idfilm est une clé étrangère sur films.

Un réalisateur est identifié de manière unique par son identifiant (entier, clé de la relation) et un nom.

PARTIE 1 :

1.1 Donner la liste des films (id, titre et annee) triée par titre.

160 tuples

1.2 Donner la liste des films avec un score supérieur ou égal à 9 ?

4 tuples

(point virgule mdr)

1.3 Quels sont les acteurs principaux (rang=1) des films sortis en 2000 ? On veut l'id et le nom triés par nom.
6 tuples

1.4 Faire le produit cartésien des relations FILMS et DISTRIBUTIONS.

Faire attention : cette requête n'a pas de sens et a va prendre beaucoup de


temps CPU.
C'est juste un exemple de ce qu'il ne faut pas faire en SQL !!!

(point virgule mdr)

186400 tuples

1.5 Donner les id des films sortis avant 1930 ou bien dans lesquels joue l'acteur de id 11.

8 (9 pour < =) tuples

1.6 Donner le nom des vedettes (rang=1) du film ayant l'id 11, dans l'ordre alphabétique.

1 tuple

1.7 Donner les noms des réalisateurs de films sortis avant 1970 et ayant 'the' dans leur titre.

11 tuples (sous Oracle et postgreSQL, 25 (sous mySQL, non sensible à la casse de 'the')

1.8 Donner les id et titre des films n'ayant aucun acteur dans leur distribution.
6 tuples

1.9 Donner les films (id et titre) sortis en 2000 et ayant au moins deux acteurs dans leur distribution.

6 tuples

1.10 Donner le(s) film(s)  (id, titre) avec le score le plus haut.

4 tuples

PARTIE 2 :

2.1 Donner le nombre total de films dirigés par le réalisateur d'id 11.

résultat : 8

2.2 Donner la liste des noms de réalisateurs, dans l'ordre alphabétique. Pour chaque réalisateur, donner son nom
et le nombre de films réalisés.

103 tuples

2.3 Pour chaque film, donner son id, son titre et son nombre total d'acteurs.

154 tuples

2.4 Quels sont les acteurs jouant dans des films avec au moins trois rangs différents. Donner leur id et leur nom.
25 tuples

2.5 Quels sont les réalisateurs (id et nom) qui ont dirigé le plus grand nombre de films ?

1 tuple

2.6 Quels sont les acteurs (id et nom) qui ont joué dans tous les films dirigés par John Ford sortis après
(strictement après !) 1940 ?

 Ecrire cette requête en utilisant la fonction COUNT

 Bonus : Ecrire cette requête en utilisant une autre méthode

2 tuples

2.7 Quels sont les acteurs (id et nom) ayant joué dans (au moins) tous les films joués par l'acteur d'id 552 ?

 Ecrire cette requête en utilisant la fonction COUNT

 Bonus : Ecrire cette requête en utilisant une autre méthode

8 tuples
2.8 Un acteur est considéré comme un acteur "favori" d'un réalisateur si celui-ci a participé à au moins deux films
réalisés par ce réalisateur. Pour chaque acteur, donner son id, son nom ainsi que le nombre de fois qu'il a été
acteur "favori".

 Ecrire cette requête en deux fois : la première requête définit une vue contenant l'information sur les
acteurs "favoris"; la seconde utilise cette vue pour obtenir la réponse finale.

 Ecrire cette requête en utilisant deux requêtes imbriquées

52 tuples

Vous aimerez peut-être aussi