jointures sur la base cine2.sqlite

Les exercices de cette page portent sur la base cine2.sqlite dont une présentation est donnée ici.

Réalisateurs

Afficher la liste des titres de films, chaque titre étant suivi du nom du réalisateur.

Vous ordonnerez cette liste dans l'ordre alphabétique des noms des réalisateurs.


SELECT  film.titre, personne.nom, personne.prenom FROM film
inner join personne on film.id_realisateur = personne.id_personne
order by personne.nom;

Nombre de films par acteur

Afficher la liste des noms d'acteurs, chaque nom d'acteur étant suivi du nombre de films dans lesquels il a joué (et qui sont enregistrés dans la base !).


select personne.nom, personne.prenom, count(distinct joue.id_film)
from personne inner join joue on personne.id_personne = joue.id_acteur
group by personne.id_personne;

Acteurs des films

  1. Afficher la liste des titres de films suivis des identifiants d'acteurs de la base enregistrés comme ayant joué un rôle dans ce film.
  2. En déduire une requête donnant la liste des noms et prénoms de ces acteurs.

Liste des identifiants des acteurs par film


select  film.titre, joue.id_acteur 
from film inner join joue on film.id_film = joue.id_film;  

Liste des nom et prénom des acteurs par film

 
select  film.titre, personne.nom, personne.prenom
from (film inner join joue on film.id_film = joue.id_film) 
inner join personne on joue.id_acteur = personne.id_personne;   

Nombre de séances par cinéma

Afficher les noms de chaque cinéma suivi du nombre de séances (première projection de film ) enregistrées dans la base pour ce cinéma.


select cinema.nom, count(distinct seance.id_film)
from seance inner join cinema on cinema.id_cinema = seance.id_cinema
group by cinema.id_cinema;

Films des cinémas

Afficher la liste des noms des cinémas suivis des noms de chaque film pour lequel la première séance dans ce cinéma est enregistrée dans la base de données.

Ordonnez par l'ordre alphabétique sur les noms de cinéma.


select cinema.nom, film.titre
from (film inner join seance on seance.id_film = film.id_film) 
inner join cinema on cinema.id_cinema = seance.id_cinema
order by cinema.nom;