Vous êtes sur la page 1sur 2

LOG660 - Base de données de haute performance

Chapitre 4: Le langage SQL

Solutions:

QUESTION 1

SELECT P1.nom, P2.nom


FROM Personne P1, Personne P2
WHERE TO_CHAR(P1.dateNaissance,'DD/MM') =
TO_CHAR(P2.dateNaissance,'DD/MM') AND
P1.id > P2.id

Note: P1.id <> P2.id ne suffit pas pour éliminer les doublons. Par exemple:
('Brad Pitt', 'George Clooney') et ('George Clooney', 'Brad Pitt').

QUESTION 2

CREATE VIEW uneVue AS


SELECT année, COUNT(*) from Film
GROUP BY année

QUESTION 3

a)

SELECT DISTINCT nom FROM Personne


WHERE dateNaissance BETWEEN ‘01/01/1940’ AND ‘01/01/1950’ AND
lieuNaissance LIKE ‘%Canada%’

b)

(
(SELECT titre, année FROM Film, Personne
WHERE idRéalisateur=Personne.id AND
nom = ‘Tim Burton’)
INTERSECT
(SELECT titre, année FROM Film, Personne, RoleFilm
WHERE Film.id = idFilm AND Personne.id = idActeur AND
nom = ‘Johnny Depp’)
)
MINUS
(SELECT titre, année FROM Film, GenreFilm
WHERE Film.id = idFilm AND genre = ‘comédie’)
c)

SELECT DISTINCT FROM Personne


WHERE NOT EXISTS
(SELECT * FROM Film
WHERE idRéalisateur=Personne.id)

d)

SELECT DISTINCT titre FROM Film


WHERE année =
(SELECT F2.année FROM Film F2
WHERE F2.titre = ‘Titanic’)

e)

SELECT DISTINCT titre FROM Film


WHERE année > SOME
(SELECT F2.année FROM Film F2, Personne
WHERE F2.idRéalisateur = Personne.id AND
nom = ‘Tim Burton’)

QUESTION 4

CREATE VIEW uneVue AS


SELECT nom, COUNT(DISTINCT idFilm) AS nbFilms, MAX(année) AS
plusRécent
FROM Personne, RoleFilm, Film
WHERE Personne.id = idActeur AND Film.id = idFilm
GROUP BY Personne.id, nom
HAVING COUNT(DISTINCT idFilm) > 5

Note:

• Chacune des colonnes du SELECT doit avoir au moins une des propriétés suivantes:
1. Être une fonction d’aggégation (COUNT, MAX, etc.)
2. Être dans le GROUP BY

C’est pour cette raison qu’il faut inclure la colonne nom dans le GROUP BY, même si
cela ne change en rien le regroupement des lignes

• Dans Oracle, il faut répéter le COUNT(DISTINCT idFilm) dans le HAVING, même


si cette information est définie dans l’alias nbFilms. En somme, on ne peut pas
utiliser d’alias dans le HAVING.

Vous aimerez peut-être aussi