Bonjour,
j'essaie de comprendre un corrigé sur une requête simple mais je bloque.
Il est demandé de trouver tous les acteurs qui ont été partenaires de DENEUVE.
Le professeur emploie les termes de sélection (= WHERE ou ON) et de projection (SELECT)
On a les tables suivantes:
LESFILMS (TITRE, PAYS, ANNEE, REALISATEUR, DUREE)
LESACTEURS (TITRE, ACTEUR)
D'abord, il isole C.Deneuve en faisant cela:
LESACTEURS1 := selection (acteur = 'Deneuve'; LESACTEURS)
Ensuite, j'ai l'impression qu'il:
- sélectionne dans la table LESACTEURS la colonne des acteurs
RES :=projection(LESACTEURS.acteur,
- qui ont joué dans les films de DENEUVE
selection (LESACTEURS1.titre = LESACTEURS.titre;
et là, je me perds. Il sélectionne les acteurs qui ne sont pas C.Deneuve et C.Deneuve. Je ne comprends pas pourquoi. Pourquoi ne pas juste garder les acteurs différents de C.Deneuve qui ont joué dans les mêmes films qu'elle?
Sa dernière ligne de code est:
selection (acteur :='Deneuve'; LESACTEURS) X LESACTEURS1)))
Je remets ici le code complet:
Je ne suis pas sûr de bien le traduire en SQL:LESACTEURS1 := selection (acteur = 'Deneuve'; LESACTEURS)
RES :=projection (LESACTEURS.acteur,
selection (LESACTEURS1.titre = LESACTEURS.titre;
selection (acteur !='Deneuve'; LESACTEURS) X LESACTEURS1)))
LESACTEURS1 = SELECT ACTEUR FROM LESACTEURS
WHERE ACTEUR = 'DENEUVE'
SELECT LESACTEURS.ACTEUR
FROM LESACTEURS
CROSS JOIN
LESACTEURS1.ACTEUR
FROM LESACTEURS1
WHERE LESACTEURS.TITRE = LESACTEURS1.TITRE
AND ACTEUR <> 'DENEUVE'
Quelqu'un pourrait-il éclairer ma lanterne, s'il vous plait?
Merci par avance,
Johnny3
Partager