• Aucun résultat trouvé

Éléments de correction 3.

N/A
N/A
Protected

Academic year: 2022

Partager "Éléments de correction 3."

Copied!
5
0
0

Texte intégral

(1)

Éléments de correction

3. Dans le système à une seule table, on doit écrire un enregistrement pour chaque film pour lequel l’acteur est connu. Ainsi, si un acteur est connu pour 4 films, on doit écrire 4 lignes comportant toutes les diverses informations concernant l’acteur (nom, année de naissance…). Dans le système à deux tables, ces informations n’apparaissent qu’une fois, seul l’identifiant des acteurs est dupliqué. On gagne donc de l’espace mémoire.

4.1. SELECT DISTINCT titleType FROM title_basics 4.2. SELECT COUNT(*) FROM title_basics

4.3.SELECT startYear FROM title_basics WHERE primaryTitle = 'The Godfather'

→ renvoie deux valeurs, on peut tester SELECT * pour voir que le second est un jeu vidéo et rajouter AND titleType = 'movie' dans la clause WHERE.

4.4. SELECT startYear FROM title_basics

WHERE primaryTitle = 'Superman' AND titleType = 'movie' ORDER BY startYear LIMIT 1

4.5. SELECT originalTitle FROM title_basics JOIN title_akas ON tconst = titleId WHERE title = 'Les dents de la mer' SELECT ta.title FROM title_akas ta

JOIN title_akas tb ON ta.titleId = tb.titleId WHERE ta.isOriginalTitle = 1

AND tb.title = 'Les dents de la mer';

4.6. SELECT primaryProfession FROM name_basics WHERE primaryName = 'Olivier Nakache' 4.7. SELECT originalTitle FROM title_basics

JOIN title_principals USING (tconst) JOIN name_basics USING (nconst) WHERE primaryName = 'Olivier Nakache' 4.8. SELECT primaryTitle, numVotes

FROM title_basics JOIN title_ratings USING (tconst)

WHERE numVotes = (SELECT MAX(numVotes) FROM title_ratings) Ou

SELECT primaryTitle, numVotes

(2)

FROM title_basics JOIN title_ratings USING (tconst)

ORDER BY numVotes DESC LIMIT 1 4.9. SELECT primaryName

FROM name_basics nb

JOIN title_writers tw ON nb.nconst = tw.writers JOIN title_basics tb ON tb.tconst = tw.tconst WHERE primaryTitle = 'Taxi' AND startYear = 1998 4.10. SELECT primaryName, category, job

FROM name_basics

JOIN title_principals USING (nconst) JOIN title_basics USING (tconst)

WHERE primaryTitle LIKE '%Return of the Jedi%'

4.11. SELECT primaryTitle FROM title_basics JOIN title_ratings USING(tconst)

WHERE averageRating > 9 AND numVotes > 10000 AND titleType = 'movie' 4.12. SELECT * FROM title_basics

JOIN title_ratings USING(tconst)

WHERE titleType = 'movie' AND genres LIKE '%Comedy%Romance%' ORDER BY averageRating DESC LIMIT 5

4.13. SELECT * FROM title_basics JOIN title_ratings USING(tconst)

WHERE titleType = 'movie' AND genres LIKE '%Animation%' AND numVotes > 1000 ORDER BY averageRating DESC LIMIT 10

4.14. SELECT Count(*) FROM title_basics WHERE runtimeMinutes > 180 and titleType = 'movie' 4.15. SELECT AVG(runtimeMinutes) FROM title_basics WHERE titleType = 'movie'

4.16. SELECT * FROM title_basics

WHERE titleType = 'movie' AND runtimeMinutes = (SELECT MAX(runtimeMinutes) FROM title_basics

WHERE titleType = 'movie')

Ou

SELECT * FROM title_basics WHERE titleType = 'movie' ORDER BY runtimeMinutes DESC LIMIT 1

4.17. SELECT * FROM title_basics WHERE titleType = 'movie' ORDER BY runtimeMinutes DESC LIMIT 5

(3)

4.18. SELECT primaryTitle FROM title_basics tb

JOIN name_titles nt ON tb.tconst = nt.knownForTitles JOIN name_basics nb ON nt.nconst = nb.nconst WHERE primaryName = 'Sean Connery'

4.19. SELECT primaryName, primarytitle FROM name_basics

JOIN title_principals USING(nconst) JOIN title_basics USING (tconst)

WHERE characters LIKE '%James Bond%' AND titleType = 'movie';

4.20. SELECT primaryName, primaryTitle FROM name_basics nb JOIN title_directors td ON nb.nconst = td.directors

JOIN title_basics tb ON tb.tconst = td.tconst JOIN title_ratings tr ON tr.tconst = tb.tconst WHERE titleType = 'movie'

ORDER BY averageRating DESC LIMIT 5 4.21. SELECT tb1.primaryTitle

FROM title_basics tb1

JOIN title_episode te ON te.tconst = tb1.tconst JOIN title_basics tb2 ON te.parentTconst = tb2.tconst WHERE tb2.primaryTitle = 'Game of Thrones'

5.1. SELECT * FROM name_basics WHERE primaryName = 'Sean Connery' UPDATE name_basics

SET deathYear = 2020

WHERE primaryName = 'Sean Connery'

5.2. On doit répartir les informations suivant les différentes tables.

INSERT INTO title_basics

VALUES (13243899, 'movie', 'Star Wars: the new generation', 'Star Wars: the new generation', 0, 2021, NULL, 124, 'Action,Adventure,Fantasy') ;

INSERT INTO title_ratings VALUES (13243899, NULL, 0) ;

INSERT INTO title_akas (titleId, ordering, title, region, isOriginalTitle) VALUES (13243899, 1, 'Star Wars: the new generation', 'US', 1) ; INSERT INTO title_akas (titleId, ordering, title, region, isOriginalTitle) VALUES (13243899, 2, 'Star Wars: the new generation', 'GB', 1) ; INSERT INTO title_akas (titleId, ordering, title, region, isOriginalTitle) VALUES (13243899, 3, 'Star Wars: la nouvelle génération', 'FR', 0) ;

(4)

INSERT INTO title_akas (titleId, ordering, title, region, isOriginalTitle) VALUES (13243899, 4, 'Star Wars: la nueva generación', 'ES', 0) ; On récupère les identifiants des personnes :

SELECT * FROM name_basics WHERE primaryName = 'Steven Spielberg'

On obtient : Steven Spielberg : 229, George Lucas : 184, Quentin Tarantino : 233

Mark Hamill : 434, Daisy Ridley : 5397459, Chuck Norris : 1569, Tom Holland : 4043618 INSERT INTO title_principals

VALUES (13243899, 1, 434, 'actor', NULL, '["Luke Skywalker"]') ; INSERT INTO title_principals

VALUES (13243899, 2, 5397459, 'actress', NULL, '["Rey"]') ; INSERT INTO title_principals

VALUES (13243899, 3, 1569, 'actor', NULL, '["Emperor"]') ; INSERT INTO title_principals

VALUES (13243899, 4, 4043618, 'actor', NULL, '["Peter Skywalker"]') ; INSERT INTO title_principals

VALUES (13243899, 5, 229, 'director', NULL, NULL) ; INSERT INTO title_principals

VALUES (13243899, 6, 184, 'writer', NULL, NULL) ; INSERT INTO title_principals

VALUES (13243899, 7, 233, 'writer', NULL, NULL) ; INSERT INTO title_directors

VALUES (13243899, 229) ; INSERT INTO title_writers VALUES (13243899, 184) ; INSERT INTO title_writers VALUES (13243899, 233) ;

5.3. SELECT primaryName, 2020 - birthYear

FROM name_basics WHERE birthYear = (SELECT MIN(birthYear)

FROM name_basics WHERE deathYear IS NULL)

L’année de naissance de Megan Liz Smith est erronée. On apprend sur internet qu’elle est née en 1997. On la corrige avec :

UPDATE name_basics SET birthYear = 1997

(5)

6.6.1. DELETE FROM title_ratings WHERE numVotes < 10 000

6.2. DELETE FROM title_episode WHERE tconst NOT IN (SELECT tconst FROM title_ratings) OR parentTconst NOT IN (SELECT tconst FROM title_ratings) ; 6.3. DELETE FROM title_akas WHERE titleId NOT IN (SELECT tconst FROM title_ratings) ;

DELETE FROM title_basics WHERE tconst NOT IN (SELECT tconst FROM title_ratings) ; DELETE FROM title_directors WHERE tconst NOT IN (SELECT tconst FROM title_ratings) ; DELETE FROM title_writers WHERE tconst NOT IN (SELECT tconst FROM title_ratings) ; DELETE FROM title_principals WHERE tconst NOT IN (SELECT tconst FROM title_ratings) ; 6.4. DELETE FROM name_titles WHERE knownForTitles NOT IN (SELECT tconst FROM title_ratings) ;

6.5. Cette requête supprime de la table name_basics les enregistrements correspondant aux personnes qui n’apparaissent plus dans les autres tables.

Références

Documents relatifs

La  Société  de  gestion  peut  décider  pour  le  compte  d’un  compartiment  que  les  valeurs  mobilières,  instruments  du  marché  monétaire, 

Si le calcul est long seulement pour certain index, une thread peut être encore entrain de faire des calculs alors que les autres ont finis. =&gt; problème de répartition de

Certains dÈlais sont vide car les commandes en questions n'ont pas encore ÈtÈ livrÈes (valeur NULL).

The notion of the normal elements of a FJH becomes very useful in the study of its subhypergroups.. This Lemma will be proved by induction. Such subhypergroups will be

SELECT Id, 1 AS Place FROM Resultats WHERE Score = (SELECT MAX(Score) FROM Resultats WHERE Date = d) AND Date = d UNION SELECT R2.Id, COUNT(*)+1 AS Place FROM Resultats AS R1

Le SQL (Structured Query Language – langage de requêtes structuré) est un langage informatique de dialogue avec une base de données relationnelle.. Une requête est une question

SELECT COUNT(*) +1 FROM JOUEURS JOIN PARTIES ON id_j=id_joueur GROUP BY id_j HAVING MAX(score) &gt;. (SELECT MAX(score) FROM JOUEURS JOIN PARTIES ON id_j=id_joueur

Simulez l’exécution de l’algorithme Driver LL(1) avec la table précédemment calculée sur la chaîne « select matricule from etudiants » où matricule et etudiants sont