Exercice SQL corrigé base de donnée cinéma (Partie IV)

Requête 24 : Donner le titre des films qui ont été primés au moins une fois (y compris les récompenses des acteurs jouant dans le film).

Forme plate:

SELECT DISTINCT F.TITRE, F.ANNÉE
FROM FILM F, RÉCOMPENSE_FILM RF
WHERE F.NUMF = RF.NUMF
UNION
SELECT DISTINCT F.TITRE, F.ANNÉE
FROM FILM F, RÉCOMPENSE_ACTEUR RA
WHERE F.NUMF = RA.NUMF

Forme imbriquée:

SELECT TITRE, ANNÉE
FROM FILM
WHERE NUMF IN (
SELECT NUMF
FROM RÉCOMPENSE_FILM
UNION
SELECT NUMF FROM RÉCOMPENSE_ACTEUR )

Requête 25 : Lister les cinémas qui ont exclusivement passé des films primés.

Forme imbriquée:

SELECT NOM, VILLE
FROM CINÉMA C
WHERE NOT EXISTS (
SELECT * FROM PASSE P
WHERE P.NUMC = C.NUMC
AND NOT EXISTS (SELECT * FROM RÉCOMPENSE_FILM RF
WHERE RF.NUMF = P.NUMF )
ANDNOT EXISTS (
SELECT * FROM RÉCOMPENSE_ACTEUR RA
WHERE RA.NUMF = P.NUMF ) )

Forme imbriquée– prédicat NOT EXISTS :

SELECT NOM, VILLE
FROM CINÉMA C
WHERE NOT EXISTS (
SELECT * FROM PASSE P
WHERE P.NUMC = C.NUMC
AND NOT EXISTS ( SELECT * FROM (
SELECT NUMF
FROM RÉCOMPENSE_FILM
UNION
SELECT NUMF
FROM RÉCOMPENSE_ACTEUR ) AS R
WHERE R.NUMF = P.NUMF ) )

Forme imbriquée – prédicat NOT IN :

SELECT NOM, VILLE
FROM CINÉMA
WHERE NUMC NOT IN (
SELECT NUMC
FROM PASSE
WHERE NUMF NOT IN (
SELECT R.NUMF FROM (
SELECT NUMF
FROM RÉCOMPENSE_FILM
UNION
SELECT NUMF
FROM RÉCOMPENSE_ACTEUR ) AS R ) ) )

Requête 26 : Donner le titre des films qui ont reçu au moins trois récompenses.

Forme imbriquée:

SELECT TITRE, ANNÉE
FROM FILM
WHERE NUMF IN (
SELECT R.NUMF
FROM (
SELECT NUMF
FROM RÉCOMPENSE_FILM
UNION
SELECT NUMF
FROM RÉCOMPENSE_ACTEUR ) AS R
GROUP BY R.NUMF
HAVING COUNT (*) >= 3 )

Requête 27 : Noms et prénoms des acteurs qui ont reçu plus de récompenses qu”’”aucun acteur qui a joué dans « Casablanca » n”’”en a eu.

Forme imbriquée:

SELECT PRÉNOM, NOM
FROM PERSONNE
WHERE NUMP IN (
SELECT NUMA
FROM RÉCOMPENSE_ACTEUR
GROUP BY NUMA
HAVING COUNT (*) > (
SELECT MAX (
SELECT COUNT (*)
FROM RÉCOMPENSE_ACTEUR
WHERE NUMA IN (
SELECT NUMA
FROM DISTRIBUTION
WHERE NUMF IN (
SELECT NUMF
FROM FILM
WHERE TITRE = ‘Casablanca’))
GROUP BY NUMA)))

Télécharger aussi :

Laisser un commentaire

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