Je travaille actuellement sur CS50 PSET7 ( https://cs50.harvard.edu/x/2020/psets/7/movies/ ) et je ne peux pas comprendre comment faire 12.sql et 13 .sql (expliqué dans le lien). Quelqu'un peut-il m'aider s'il vous plaît?
Pour 12.sql: recherchez les titres de films où "id" dans "id's of Johnny Depp movies" et "id" dans "id's of Helena Bonham Carter movies", tels que:
SELECT "title" FROM "movies"
WHERE "id" IN (-- code to select movie id's in which "Johnny Depp" starred)
AND "id" IN (-- code to select movie id's in which "Helena Bonham Carter" starred);
Pour 13.sql: Trouvez les noms des personnes où "person_id" dans "stars" correspond au "movie_id" dans lequel "Kevin Bacon (né: 1958)" a joué, et les noms! = "Kevin Bacon", tels que:
SELECT "name" FROM "people"
WHERE "id" IN
(-- select "person id's" from "stars" where "movie id" in
(-- select "movie id's" in which "Kevin Bacon (born: 1958)" starred))
AND "name" != "Kevin Bacon";
Dans les deuxièmes crochets de 13.sql, pour interroger "Kevin Bacon né en 1958", vous pouvez écrire un code comme celui-ci:
... WHERE "people"."name" = "Kevin Bacon" AND "people"."birth" = 1958))...
Pensez simple, pas besoin de faire quoi que ce soit de fantaisie.
Pour ces deux Psets, vous devez utiliser des instructions SELECT
imbriquées, par exemple:
SELECT table.column FROM table WHERE table.column IN (SELECT table.column2 FROM table WHERE ...)
Sur la base de mon expérience pour 12, vous devrez utiliser 2 requêtes imbriquées distinctes (dont chacune devrait avoir plusieurs valeurs), puis utiliser un opérateur AND
pour trouver les films qui apparaissent dans les deux.
Pour 13, j'ai trouvé que l'utilisation de plusieurs requêtes imbriquées avait aidé, en commençant par trouver l'id de Kevin Bacon et en travaillant jusqu'à la sélection des personnes. les valeurs de nom d'une requête contenant plusieurs people.id
valeurs.