2 prise en main de la base de données «...

15
Lycée Claude Bernard 2014-2015 Informatique - T.P. n 15 - Corrigé P a g e 1 | 15 Requêtes sur une base de données à plusieurs tables - Jointures 2 Prise en main de la base de données « Cinema » 1) Afficher le nombre de lignes de la table casting. SELECT COUNT(*) FROM casting COUNT(*) 15715 2) Afficher le numéro et le titre des films sortis en 2000. Les compter en écrivant une autre requête. SELECT id,titre FROM film WHERE annee=2000 id titre 32 Gladiator 92 X-Men 99 Mission: Impossible II 173 Patriot, The 188 Perfect Storm, The 234 High Fidelity 235 Chicken Run 250 Erin Brockovich 278 Unbreakable 305 Mission to Mars 317 Scream 3 322 Gone in Sixty Seconds 329 Scary Movie 3) En quelle année le film "Forrest Gump" est-il sorti ? SELECT annee FROM film WHERE titre="Forrest Gump" annee 1994 4) Lister tous les films dont le titre contient "Star Wars". On utilisera le test LIKE. Les trier par année de sortie. SELECT annee,titre FROM film WHERE titre LIKE "%Star Wars%" ORDER BY annee annee titre 1977 Star Wars Episode IV: A New Hope 1980 Star Wars: Episode V - The Empire Strikes Back 1983 Star Wars: Episode VI - Return of the Jedi 1999 Star Wars: Episode I - The Phantom Menace 2002 Star Wars Episode II: Attack of the Clones 2005 Star Wars Episode III: Revenge of the Sith 5) Afficher les titres des films dont l’identifiant est 7, 37 ou 133 (en une unique requête bien entendu). SELECT titre FROM film WHERE id IN (7,37,133) titre Schindler's List Indiana Jones and the Last Crusade Close Encounters of the Third Kind

Upload: others

Post on 09-Feb-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

  • Lycée Claude Bernard 2014-2015 Informatique - T.P. n◦ 15 - Corrigé

    P a g e 1 | 15

    Requêtes sur une base de données à plusieurs tables - Jointures

    2 Prise en main de la base de données « Cinema »

    1) Afficher le nombre de lignes de la table casting.

    SELECT COUNT(*) FROM casting

    COUNT(*)

    15715

    2) Afficher le numéro et le titre des films sortis en 2000. Les compter en écrivant une autre requête.

    SELECT id,titre FROM film WHERE annee=2000

    id titre

    32 Gladiator

    92 X-Men

    99 Mission: Impossible II

    173 Patriot, The

    188 Perfect Storm, The

    234 High Fidelity

    235 Chicken Run

    250 Erin Brockovich

    278 Unbreakable

    305 Mission to Mars

    317 Scream 3

    322 Gone in Sixty Seconds

    329 Scary Movie

    3) En quelle année le film "Forrest Gump" est-il sorti ?

    SELECT annee FROM film WHERE titre="Forrest Gump"

    annee

    1994

    4) Lister tous les films dont le titre contient "Star Wars". On utilisera le test LIKE.

    Les trier par année de sortie.

    SELECT annee,titre FROM film WHERE titre LIKE "%Star Wars%" ORDER BY annee

    annee titre

    1977 Star Wars Episode IV: A New Hope

    1980 Star Wars: Episode V - The Empire Strikes Back

    1983 Star Wars: Episode VI - Return of the Jedi

    1999 Star Wars: Episode I - The Phantom Menace

    2002 Star Wars Episode II: Attack of the Clones

    2005 Star Wars Episode III: Revenge of the Sith

    5) Afficher les titres des films dont l’identifiant est 7, 37 ou 133 (en une unique requête bien entendu).

    SELECT titre FROM film WHERE id IN (7,37,133)

    titre

    Schindler's List

    Indiana Jones and the Last Crusade

    Close Encounters of the Third Kind

    http://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fgroup-by-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_counthttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+id%2Ctitre+FROM+film+WHERE+annee%3D2000%0AORDER+BY+%60film%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+id%2Ctitre+FROM+film+WHERE+annee%3D2000%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fstring-comparison-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#operator_likehttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+annee%2Ctitre+FROM+film+WHERE+titre+LIKE+%22%25Star+Wars%25%22%0AORDER+BY+%60film%60.%60annee%60++DESC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+annee%2Ctitre+FROM+film+WHERE+titre+LIKE+%22%25Star+Wars%25%22%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fcomparison-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_inhttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+titre+FROM+film+WHERE+id+IN+%287%2C37%2C133%29%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+annee,titre+FROM+film+WHERE+titre+LIKE+"%Star+Wars%"ORDER+BY+`film`.`annee`++DESC&session_max_rows=25&token=752fb39708f92510b12871d89608c5ac

  • Lycée Claude Bernard 2014-2015 Informatique - T.P. n◦ 15 - Corrigé

    P a g e 2 | 15

    6) Quel est le réalisateur des trois films précédents? Même si la réponse est évidente, vous devez écrire

    une requête (en copiant-collant l’identifiant du réalisateur, puis en utilisant une sous-requête).

    En deux requêtes, en copiant collant l’identifiant du réalisateur :

    SELECT titre,realisateur FROM film WHERE id IN (7,37,133)

    titre realisateur

    Schindler's List 18

    Indiana Jones and the Last Crusade 18

    Close Encounters of the Third Kind 18

    SELECT nom FROM acteur WHERE id=18

    nom

    Steven Spielberg

    En une requête englobant une sous-requête :

    SELECT nom FROM acteur WHERE id=(SELECT DISTINCT realisateur FROM film WHERE

    id IN (7,37,133))

    nom

    Steven Spielberg

    Bien noter le résultat de la sous-requête que l’on a adaptée pour qu’elle renvoie uniquement l’id voulu :

    SELECT DISTINCT realisateur FROM film WHERE id IN (7,37,133)

    realisateur

    18

    7) Quel est l’identifiant de l’acteur Brad Pitt?

    SELECT id FROM acteur WHERE nom="Brad Pitt"

    id

    258

    3 Jointures

    La jointure permet de regrouper des informations stockées dans plusieurs tables. L’utilisation la plus

    simple correspond à la syntaxe suivante.

    SELECT * FROM table1

    JOIN table2 ON table1.champ1 = table2.champ2

    Le résultat est le même que celui qu’on obtiendrait en réalisant le produit cartésien des deux tables suivi

    d’un filtrage ne gardant que les multiplets respectant la condition table1.champ1 = table2.champ2.

    Taper la requête suivante :

    SELECT nom

    FROM acteur

    JOIN film ON film.realisateur=acteur.id

    WHERE film.id = 7

    Vérifier qu’on retrouve un résultat obtenu précédemment. Expliquer.

    SELECT nom FROM acteur JOIN film ON film.realisateur=acteur.id WHERE

    film.id = 7

    nom

    Steven Spielberg

    La syntaxe table.id est ici nécessaire car les tables acteur et film ont toutes les deux un champ id. En

    revanche, film.realisateur peut être abrégé par realisateur car il n’y a pas d’ambiguïté.

    8) Le but de cette question est de retrouver les films réalisés par Quentin Tarantino. On va utiliser deux

    méthodes.

    La mauvaise méthode :

    - Ecrire une première requête pour obtenir l’identifiant de Quentin Tarantino

    - Ecrire une deuxième requête pour obtenir les films qu’il a réalisé en copiant le résultat de la requête

    précédente.

    http://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fcomparison-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_inhttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+titre%2Crealisateur+FROM+film+WHERE+id+IN+%287%2C37%2C133%29%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+titre%2Crealisateur+FROM+film+WHERE+id+IN+%287%2C37%2C133%29%0AORDER+BY+%60film%60.%60realisateur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+18&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+18&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+18&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fcomparison-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_inhttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fcomparison-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_inhttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+18&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5ac

  • Lycée Claude Bernard 2014-2015 Informatique - T.P. n◦ 15 - Corrigé

    P a g e 3 | 15

    SELECT id FROM acteur WHERE nom="Quentin Tarantino"

    id

    444

    SELECT titre FROM film WHERE realisateur=444

    titre

    Pulp Fiction

    Reservoir Dogs

    Jackie Brown

    Kill Bill: Vol. 1

    Kill Bill: Vol. 2

    Death Proof

    Inglourious Basterds

    Django Unchained

    La bonne méthode :

    - Ecrire une unique requête utilisant une jointure.

    La jointure à réaliser est mise en évidence ci-dessous :

    SELECT * FROM film JOIN acteur ON realisateur=acteur.id

    id titre annee note nb_votes realisateur id nom

    1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360 360 George Lucas

    2 Shawshank Redemption, The 1994 9.00 44974 1040 1040 Frank Darabont

    3 Pulp Fiction 1994 8.60 43993 444 444 Quentin Tarantino

    4 Titanic 1997 7.20 43371 198 198 James Cameron

    5 Star Wars: Episode V - The Empire Strikes Back 1980 8.60 39446 651 651 Irvin Kershner

    6 Usual Suspects, The 1995 8.70 35027 639 639 Bryan Singer

    La requête sur cette jointure donnant le résultat est :

    SELECT titre FROM film JOIN acteur ON realisateur=acteur.id WHERE

    nom="Quentin Tarantino"

    titre

    Pulp Fiction

    Reservoir Dogs

    Jackie Brown

    Kill Bill: Vol. 1

    Kill Bill: Vol. 2

    Death Proof

    Inglourious Basterds

    Django Unchained

    9) Quel est l’identifiant du film Casablanca ? SELECT id FROM film WHERE titre="Casablanca"

    id

    27

    10) Afficher le casting (c’est-à-dire la liste des acteurs) du film Casablanca en copiant-collant l’identifiant obtenu à la question précédente, puis à l’aide d’une sous-requête.

    Première façon : La jointure sur laquelle construire la requête est

    SELECT * FROM casting JOIN acteur ON id_acteur=acteur.id

    id_film id_acteur num id nom

    367 1876 12 1876 'Weird Al' Yankovic

    728 1876 1 1876 'Weird Al' Yankovic

    698 4235 2 4235 A.J. Langer

    http://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+titre%0AFROM+film%0AWHERE+realisateur%3D444%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A%0AFROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60film%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A%0AFROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A%0AFROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60film%60.%60annee%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A%0AFROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60film%60.%60note%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A%0AFROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60film%60.%60nb_votes%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A%0AFROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60film%60.%60realisateur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A%0AFROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60acteur%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A%0AFROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+360&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+1040&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+444&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+198&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+651&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+639&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+titre%0AFROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AWHERE+nom%3D%22Quentin+Tarantino%22%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A%0AFROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60casting%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A%0AFROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60casting%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A%0AFROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60casting%60.%60num%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A%0AFROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60acteur%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A%0AFROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5ac

  • Lycée Claude Bernard 2014-2015 Informatique - T.P. n◦ 15 - Corrigé

    P a g e 4 | 15

    La requête sur cette jointure est :

    SELECT nom FROM casting JOIN acteur ON id_acteur=acteur.id WHERE id_film=27

    nom

    Humphrey Bogart

    Ingrid Bergman

    Claude Rains

    Peter Lorre

    Paul Henreid

    John Qualen

    Curt Bois

    Conrad Veidt

    Madeleine LeBeau

    Deuxième méthode à l’aide d’une sous-requête :

    SELECT nom FROM casting JOIN acteur ON id_acteur=acteur.id WHERE

    id_film=(SELECT id FROM film WHERE titre="Casablanca")

    11) Obtenir le casting du film Alien en utilisant une unique requête (c’est-à-dire sans utiliser de copier-

    coller comme à la question précédente).

    On pourra réaliser plusieurs jointures (c’est-à-dire utiliser plusieurs fois la commande JOIN ... ON).

    La première jointure ci-dessous associe les id_film de la table casting à leurs noms via le prédicat

    id_film=film.id :

    SELECT * FROM casting JOIN film ON id_film=film.id

    id_film id_acteur num id titre annee note nb_votes realisateur

    1 6 2 1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360

    1 462 3 1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360

    1 552 1 1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360

    On réalise ensuite une seconde jointure à partir de la jointure ci-dessus, pour associer aux id_acteurs de

    la table casting avec le nom des acteurs correspondants à l’aide du prédicat id_acteur=acteur.id :

    id_film id_acteur num id titre annee note nb_votes realisateur id nom

    1 6 2 1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360 6 Harrison Ford

    1 462 3 1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360 462 Carrie Fisher

    1 552 1 1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360 552 Mark Hamill

    La requête à formuler sur cette double jointure est alors :

    SELECT nom FROM casting JOIN film ON id_film=film.id JOIN acteur ON

    id_acteur=acteur.id WHERE titre="Alien"

    nom

    Sigourney Weaver

    Ian Holm

    Harry Dean Stanton

    Tom Skerritt

    John Hurt

    Veronica Cartwright

    Yaphet Kotto

    12) Lister les films dans lesquels a joué Harrison Ford.

    On formule une requête sur la même double jointure que précédemment :

    SELECT titre FROM casting JOIN film ON id_film=film.id JOIN acteur ON

    id_acteur=acteur.id WHERE nom="Harrison Ford"

    http://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+nom%0AFROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id%0AWHERE+id_film%3D27%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id%0AORDER+BY+%60casting%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id%0AORDER+BY+%60casting%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id%0AORDER+BY+%60casting%60.%60num%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60annee%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60note%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60nb_votes%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60realisateur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60casting%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60casting%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60casting%60.%60num%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60film%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60film%60.%60annee%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60film%60.%60note%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60film%60.%60nb_votes%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60film%60.%60realisateur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60acteur%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+nom+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AWHERE+titre%3D%22Alien%22%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5ac

  • Lycée Claude Bernard 2014-2015 Informatique - T.P. n◦ 15 - Corrigé

    P a g e 5 | 15

    titre

    Star Wars Episode IV: A New Hope

    Star Wars: Episode V - The Empire Strikes Back

    Raiders of the Lost Ark

    Star Wars: Episode VI - Return of the Jedi

    Blade Runner

    Indiana Jones and the Last Crusade

    Fugitive, The

    Apocalypse Now

    Indiana Jones and the Temple of Doom

    Air Force One

    Witness

    Clear and Present Danger

    Patriot Games

    American Graffiti

    What Lies Beneath

    Six Days Seven Nights

    Working Girl

    Sabrina

    Devil's Own, The

    Conversation, The

    Regarding Henry

    Frantic

    Presumed Innocent

    Random Hearts

    Mosquito Coast, The

    13) Lister les films dans lesquels Harrison Ford a joué un second rôle (les premiers rôles correspondent

    à num=1).

    En utilisant toujours la même double jointure :

    SELECT titre FROM casting JOIN film ON id_film=film.id JOIN acteur ON

    id_acteur=acteur.id WHERE nom="Harrison Ford" AND num>1

    titre

    Star Wars Episode IV: A New Hope

    Star Wars: Episode V - The Empire Strikes Back

    Star Wars: Episode VI - Return of the Jedi

    Apocalypse Now

    American Graffiti

    Conversation, The

    14) Lister tous les films de la base de données sortis en 2000 en précisant le nom de l’acteur jouant le

    rôle principal.

    On modifie les attributs de projection et le prédicat de sélection :

    SELECT titre,nom FROM casting JOIN film ON id_film=film.id JOIN acteur ON

    id_acteur=acteur.id WHERE annee=2000 AND num=1

    titre nom

    Gladiator Russell Crowe

    X-Men Hugh Jackman

    Mission: Impossible II Tom Cruise

    Patriot, The Mel Gibson

    http://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+titre+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AWHERE+nom%3D%22Harrison+Ford%22%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#operator_andhttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+titre+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AWHERE+nom%3D%22Harrison+Ford%22+AND+num%3E1%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#operator_andhttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+titre%2Cnom+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AWHERE+annee%3D2000+AND+num%3D1%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+titre%2Cnom+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AWHERE+annee%3D2000+AND+num%3D1%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5ac

  • Lycée Claude Bernard 2014-2015 Informatique - T.P. n◦ 15 - Corrigé

    P a g e 6 | 15

    titre nom

    Perfect Storm, The George Clooney

    High Fidelity John Cusack

    Chicken Run Phil Daniels (I)

    Erin Brockovich Julia Roberts

    Unbreakable Bruce Willis

    Mission to Mars Gary Sinise

    Scream 3 David Arquette

    Gone in Sixty Seconds Nicolas Cage

    Scary Movie Shannon Elizabeth

    Wo hu zang long Yun-Fat Chow

    U-571 Matthew McConaughey

    Whole Nine Yards, The Bruce Willis

    American Psycho Christian Bale

    Charlie's Angels Cameron Diaz

    Pitch Black Radha Mitchell

    Final Destination Devon Sawa

    What Lies Beneath Harrison Ford

    Cell, The Jennifer Lopez

    Frequency Dennis Quaid

    Beach, The Leonardo DiCaprio

    Almost Famous Billy Crudup

    15) Afficher tous les Star Wars en précisant le nom du réalisateur.

    On peut revenir ici à une jointure simple permettant d’associer à l’attribut entier réalisateur de la table

    film, le nom du réalisateur, tiré de la table acteur :

    SELECT * FROM film JOIN acteur ON realisateur=acteur.id

    id titre annee note nb_votes realisateur id nom

    1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360 360 George Lucas

    2 Shawshank Redemption, The 1994 9.00 44974 1040 1040 Frank Darabont

    3 Pulp Fiction 1994 8.60 43993 444 444 Quentin Tarantino

    4 Titanic 1997 7.20 43371 198 198 James Cameron

    5 Star Wars: Episode V - The Empire Strikes Back 1980 8.60 39446 651 651 Irvin Kershner

    La requête à faire sur cette jointure est alors :

    SELECT titre,nom FROM film JOIN acteur ON realisateur=acteur.id WHERE titre

    LIKE "%Star Wars%"

    titre nom

    Star Wars Episode IV: A New Hope George Lucas

    Star Wars: Episode V - The Empire Strikes Back Irvin Kershner

    Star Wars: Episode VI - Return of the Jedi Richard Marquand

    Star Wars: Episode I - The Phantom Menace George Lucas

    Star Wars Episode II: Attack of the Clones George Lucas

    Star Wars Episode III: Revenge of the Sith George Lucas

    16) Sur le tournage de quel ”film” Angelina Jolie et Brad Pitt se sont-ils rencontrés? On va procéder

    pas à pas. Commencer par obtenir l’identifiant d’Angelina Jolie puis celui de Brad Pitt. En déduire le

    titre du ”film” (en copiant-collant les identifiants des deux acteurs).

    On forme des requêtes sur la table acteur donnant les id des deux acteurs :

    http://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+titre%2Cnom+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AWHERE+annee%3D2000+AND+num%3D1%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+titre%2Cnom+FROM+casting+JOIN+film+ON+id_film%3Dfilm.id+%0AJOIN+acteur+ON+id_acteur%3Dacteur.id%0AWHERE+annee%3D2000+AND+num%3D1%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60film%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60film%60.%60annee%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60film%60.%60note%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60film%60.%60nb_votes%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60film%60.%60realisateur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60acteur%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+360&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+1040&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+444&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+198&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+651&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fstring-comparison-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#operator_likehttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+titre%2Cnom+FROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AWHERE+titre+LIKE+%22%25Star+Wars%25%22%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+titre%2Cnom+FROM+film+JOIN+acteur+ON+realisateur%3Dacteur.id%0AWHERE+titre+LIKE+%22%25Star+Wars%25%22%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5ac

  • Lycée Claude Bernard 2014-2015 Informatique - T.P. n◦ 15 - Corrigé

    P a g e 7 | 15

    SELECT id FROM acteur WHERE nom="Angelina Jolie"

    id

    487

    SELECT id FROM acteur WHERE nom="Brad Pitt"

    id

    258

    Puis une requête sur la table casting pour identifier un film dans lequel les deux acteurs ont joué ;

    concrètement, on liste les films dans lesquels l’un ou l’autre a joué et on repère sur le résultat un id_film

    apparaissant deux fois :

    id_film

    21

    33

    144

    201

    253

    638

    647

    662

    962

    1307

    1856

    322

    354

    494

    523

    866

    1045

    1806

    1856

    Le résultat n’étant pas très facile à lire (18 résultats non ordonnés à examiner), on peut ordonner les

    résultats selon l’id_film, pour repérer un id_film apparaissant deux fois :

    SELECT id_film FROM casting WHERE id_acteur=487 OR id_acteur=258 ORDER BY

    id_film

    Il est possible aussi de regrouper les résultats selon l’id_film, à condition de bien demander l’affichage

    du nombre d’enregistrements pour chaque regroupement :

    SELECT id_film,COUNT(*) FROM casting WHERE id_acteur=487 OR id_acteur=258

    GROUP BY id_film

    ou même encore ordonner par le nombre d’enregistrements :

    SELECT id_film,COUNT(*) FROM casting WHERE id_acteur=487 OR id_acteur=258

    GROUP BY id_film ORDER BY COUNT(*) DESC

    Ou bien, avec renommage :

    SELECT id_film,COUNT(*) AS nbOccurrences FROM casting WHERE id_acteur=487

    OR id_acteur=258 GROUP BY id_film ORDER BY nbOccurrences DESC

    id_film nbOccurrences

    1856 2

    866 1

    21 1

    ...

    Bien sûr, si l’on recourt à une clause HAVING pour ne sélectionner que les id_film apparaissant deux

    fois, on obtient exactement et seulement le résultat cherché :

    SELECT id_film,COUNT(*) AS nbOccurrences FROM casting WHERE id_acteur=487

    OR id_acteur=258 GROUP BY id_film HAVING COUNT(*)=2

    http://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+id_film+FROM+casting+WHERE+id_acteur%3D487+OR+id_acteur%3D258%0AORDER+BY+%60casting%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#operator_orhttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fgroup-by-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_counthttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#operator_orhttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fgroup-by-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_counthttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#operator_orhttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+id_film%2CCOUNT%28%2A%29+AS+nbOccurrences+FROM+casting+WHERE+id_acteur%3D487+OR+id_acteur%3D258+GROUP+BY+id_film%0AORDER+BY+%60casting%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+id_film%2CCOUNT%28%2A%29+AS+nbOccurrences+FROM+casting+WHERE+id_acteur%3D487+OR+id_acteur%3D258+GROUP+BY+id_film%0AORDER+BY+%60nbOccurrences%60++ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fgroup-by-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_counthttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#operator_orhttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fgroup-by-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_counthttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+id_film,COUNT(*)+AS+nbOccurrences+FROM+casting+WHERE+id_acteur%3D487+OR+id_acteur%3D258+GROUP+BY+id_filmORDER+BY+`nbOccurrences`++ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5ac

  • Lycée Claude Bernard 2014-2015 Informatique - T.P. n◦ 15 - Corrigé

    P a g e 8 | 15

    id_film nbOccurrences

    1856 2

    Ou plus simplement (pour n’obtenir pour seul résultat que l’id_film cherché) :

    SELECT id_film FROM casting WHERE id_acteur=487 OR id_acteur=258 GROUP BY

    id_film HAVING COUNT(*)=2

    id_film

    1856

    Il reste encore à formuler une requête pour obtenir le titre du film en question (en recopiant l’id_film

    obtenu :

    SELECT titre FROM film WHERE film.id=1856

    titre

    Mr. & Mrs. Smith

    Bien sûr, on peut à l’aide de sous-requête, fondre toutes les requêtes en une seule et éviter ainsi toute

    recopie, mais au prix d’une requête assez difficile à décrypter au premier abord :

    SELECT titre FROM film WHERE film.id=(SELECT id_film FROM casting WHERE

    id_acteur=(SELECT id FROM acteur WHERE nom="Angelina Jolie") OR

    id_acteur=(SELECT id FROM acteur WHERE nom="Brad Pitt") GROUP BY id_film

    HAVING COUNT(*)=2)

    titre

    Mr. & Mrs. Smith

    Pour obtenir une requête plus simple, il est ici, et peut être, de façon générale, intéressant de réaliser une

    jointure entre une table et elle-même. Cela permet par exemple de retrouver les acteurs ayant joué dans

    un même film. Il est alors nécessaire de renommer les deux copies de la table pour éviter toute confusion.

    17) Retrouver le résultat de la question précédente en utilisant une unique requête. Pour cela, réaliser

    une auto-jointure de la table casting.

    On réalise l’auto-jointure de la table casting avec elle-même de la façon suivante (ou le renommage de

    la table casting est nécessaire pour que la requête de jointure soit acceptée), suivant le prédicat d’égalité

    de l’attribut id_film dans les « deux » tables casting :

    SELECT * FROM casting AS table1 JOIN casting AS table2 ON

    table1.id_film=table2.id_film

    id_film id_acteur num id_film id_acteur num

    1 552 1 1 6 2

    1 552 1 1 462 3

    1 552 1 1 552 1

    1 552 1 1 925 5

    1 552 1 1 1655 6

    Une autre façon de procéder, en ne renommant qu’une table étant :

    SELECT * FROM casting JOIN casting AS casting1 ON

    casting.id_film=casting1.id_film

    Pour un résultat plus concis, on peut compléter par une projection et, pour plus de clarté, par quelques

    renommages :

    SELECT table1.id_film,table1.id_acteur AS acteur1,table2.id_acteur AS

    acteur2 FROM casting AS table1 JOIN casting AS table2 ON

    table1.id_film=table2.id_film

    id_film acteur1 acteur2

    1 6 6

    1 6 462

    1 6 552

    Il est alors facile de compléter la requête par une clause de sélection adéquate :

    http://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#operator_orhttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fgroup-by-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_counthttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#operator_orhttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fgroup-by-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_counthttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%0AORDER+BY+%60table1%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%0AORDER+BY+%60table1%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%0AORDER+BY+%60table1%60.%60num%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%0AORDER+BY+%60table2%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%0AORDER+BY+%60table2%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%0AORDER+BY+%60table2%60.%60num%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+table1.id_film%2Ctable1.id_acteur+AS+acteur1%2Ctable2.id_acteur+AS+acteur2+FROM+casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%0AORDER+BY+%60table1%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+table1.id_film%2Ctable1.id_acteur+AS+acteur1%2Ctable2.id_acteur+AS+acteur2+FROM+casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%0AORDER+BY+%60table1%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+table1.id_film%2Ctable1.id_acteur+AS+acteur1%2Ctable2.id_acteur+AS+acteur2+FROM+casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%0AORDER+BY+%60table2%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5ac

  • Lycée Claude Bernard 2014-2015 Informatique - T.P. n◦ 15 - Corrigé

    P a g e 9 | 15

    SELECT table1.id_film,table1.id_acteur AS `acteur1`,table2.id_acteur AS

    `acteur2` FROM casting AS table1 JOIN casting AS table2 ON

    table1.id_film=table2.id_film WHERE table1.id_acteur=487 AND

    table2.id_acteur=258

    Si on veut ne pas avoir à trouver et copier les id des deux acteurs, on fera après l’auto-jointure, deux

    jointures sur la table acteur, et pour pouvoir afficher le titre du film, une jointure supplémentaire avec la

    table film :

    SELECT * FROM (((casting AS table1 JOIN casting AS table2 ON

    table1.id_film=table2.id_film) JOIN acteur AS acteur1 ON

    table1.id_acteur=acteur1.id) JOIN acteur AS acteur2 ON

    table2.id_acteur=acteur2.id) JOIN film ON table1.id_film=film.id

    id_film id_acteur num id_film id_acteur num id nom id nom id titre annee note nb_votes realisateur

    1 6 2 1 6 2 6 Harrison Ford

    6 Harrison

    Ford 1

    Star Wars Episode IV: A New Hope

    1977 8.80 53567 360

    1 6 2 1 462 3 6 Harrison

    Ford 462

    Carrie Fisher

    1 Star Wars Episode IV:

    A New Hope 1977 8.80 53567 360

    1 6 2 1 552 1 6 Harrison

    Ford 552

    Mark Hamill

    1 Star Wars Episode IV:

    A New Hope 1977 8.80 53567 360

    … [146723 résultats]

    Et si l’on ne garde que les attributs d’intérêt pour la requête :

    SELECT film.titre,acteur1.nom AS acteur1,acteur2.nom AS acteur2 FROM

    (((casting AS table1 JOIN casting AS table2 ON

    table1.id_film=table2.id_film) JOIN acteur AS acteur1 ON

    table1.id_acteur=acteur1.id) JOIN acteur AS acteur2 ON

    table2.id_acteur=acteur2.id) JOIN film ON table1.id_film=film.id

    titre acteur1 acteur2

    'Breaker' Morant Bryan Brown Bryan Brown

    'Breaker' Morant Bryan Brown Edward Woodward

    'Breaker' Morant Bryan Brown Jack Thompson (I)

    … [146723 résultats]

    On termine alors en imposant que l’acteur1 soit Angelina Jolie et l’acteur2 soit Brad Pitt :

    SELECT film.titre,acteur1.nom AS acteur1,acteur2.nom AS acteur2 FROM

    (((casting AS table1 JOIN casting AS table2 ON

    table1.id_film=table2.id_film) JOIN acteur AS acteur1 ON

    table1.id_acteur=acteur1.id) JOIN acteur AS acteur2 ON

    table2.id_acteur=acteur2.id) JOIN film ON table1.id_film=film.id WHERE

    acteur1.nom="Angelina Jolie" AND acteur2.nom="Brad Pitt"

    titre acteur1 acteur2

    Mr. & Mrs. Smith Angelina Jolie Brad Pitt

    18) Afficher les réalisateurs qui ont joué dans leur propre film. Commencer par afficher leur identifiant

    (avec une unique jointure). Puis afficher leur nom (avec deux jointures)

    Il y a besoin ici de croiser les informations des tables film et casting, par la jointure suivante

    SELECT * FROM film JOIN casting ON film.id=id_film

    id titre annee note nb_votes realisateur id_film id_acteur num

    1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360 1 6 2

    1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360 1 462 3

    1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360 1 552 1

    qui permet d’avoir un enregistrement par multiplet (film,réalisateur,acteur), dans lequel on accède en

    particulier au réalisateur du film et à un acteur du film.

    On peut alors compléter par l’opération de sélection adéquate :

    id_film acteur1 acteur2

    1856 487 258

    http://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#operator_andhttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60table1%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60table1%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60table1%60.%60num%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60table2%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60table2%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60table2%60.%60num%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60acteur1%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60acteur1%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60acteur2%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60acteur2%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60annee%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60note%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60nb_votes%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60realisateur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+film.titre%2Cacteur1.nom+AS+acteur1%2Cacteur2.nom+AS+acteur2+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+film.titre%2Cacteur1.nom+AS+acteur1%2Cacteur2.nom+AS+acteur2+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60acteur1%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+film.titre%2Cacteur1.nom+AS+acteur1%2Cacteur2.nom+AS+acteur2+FROM+%28%28%28casting+AS+table1+JOIN+casting+AS+table2+ON+table1.id_film%3Dtable2.id_film%29+JOIN+acteur+AS+acteur1+ON+table1.id_acteur%3Dacteur1.id%29+JOIN+acteur+AS+acteur2+ON+table2.id_acteur%3Dacteur2.id%29+JOIN+film+ON+table1.id_film%3Dfilm.id%0AORDER+BY+%60acteur2%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html&server=0&token=752fb39708f92510b12871d89608c5ac#operator_andhttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AORDER+BY+%60film%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AORDER+BY+%60film%60.%60annee%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AORDER+BY+%60film%60.%60note%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AORDER+BY+%60film%60.%60nb_votes%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AORDER+BY+%60film%60.%60realisateur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AORDER+BY+%60casting%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AORDER+BY+%60casting%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AORDER+BY+%60casting%60.%60num%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+360&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+360&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+360&token=752fb39708f92510b12871d89608c5ac

  • Lycée Claude Bernard 2014-2015 Informatique - T.P. n◦ 15 - Corrigé

    P a g e 10 | 15

    SELECT * FROM film JOIN casting ON film.id=id_film WHERE

    realisateur=id_acteur

    id titre annee note nb_votes realisateur id_film id_acteur num

    39 Reservoir Dogs 1992 8.20 20343 444 39 444 10

    40 Citizen Kane 1941 8.80 20269 253 40 253 1

    49 Monty Python and the Holy Grail 1975 8.30 18640 59 49 59 4

    Pour obtenir le nom des réalisateurs en question, on peut compléter par la première jointure par une avec

    la table acteur sur le prédicat id_acteur=acteur.id, en gardant en fin de requête, le même critère de

    sélection :

    SELECT * FROM (film JOIN casting ON film.id=id_film) JOIN acteur ON

    id_acteur=acteur.id WHERE realisateur=id_acteur

    id titre annee note nb_votes realisateur id_film id_acteur num id nom

    39 Reservoir Dogs 1992 8.20 20343 444 39 444 10 444 Quentin Tarantino

    40 Citizen Kane 1941 8.80 20269 253 40 253 1 253 Orson Welles

    49 Monty Python and the Holy Grail 1975 8.30 18640 59 49 59 4 59 Terry Gilliam

    68 Star Trek: First Contact 1996 7.20 13948 500 68 500 2 500 Jonathan Frakes

    On obtient tous les films (134 au total) dans lesquels le réalisateur a joué un rôle figurant au casting.

    On peut alléger le résultat par projection et renommage :

    SELECT titre,nom AS 'réalisateur et acteur' FROM (film JOIN casting ON

    film.id=id_film) JOIN acteur ON id_acteur=acteur.id WHERE

    realisateur=id_acteur

    titre réalisateur et acteur

    Reservoir Dogs Quentin Tarantino

    Citizen Kane Orson Welles

    Monty Python and the Holy Grail Terry Gilliam

    19) Afficher l’année et le nombre de films avec Bruce Willis sortis cette année-là.

    On doit réaliser une jointure des trois tables (casting pour avoir le lien acteur-film, film pour avoir

    l’année du film, acteur pour ne pas avoir à chercher l’id de Bruce Willis).

    SELECT annee,COUNT(*) FROM casting JOIN acteur ON id_acteur=acteur.id WHERE

    nom="Bruce Willis" GROUP BY annee

    annee COUNT(*)

    1987 1

    1988 1

    1990 2

    1991 2

    1992 1

    1993 1

    1994 3

    1995 2

    1997 1

    1998 2

    1999 2

    2000 2

    http://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AWHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AWHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AWHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60annee%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AWHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60note%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AWHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60nb_votes%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AWHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60realisateur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AWHERE+realisateur%3Did_acteur%0AORDER+BY+%60casting%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AWHERE+realisateur%3Did_acteur%0AORDER+BY+%60casting%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+film+JOIN+casting+ON+film.id%3Did_film%0AWHERE+realisateur%3Did_acteur%0AORDER+BY+%60casting%60.%60num%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+444&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+253&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+59&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60annee%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60note%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60nb_votes%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60realisateur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60casting%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60casting%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60casting%60.%60num%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60acteur%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+%2A+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+444&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+253&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+59&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=acteur&pos=0&sql_query=SELECT+%2A+FROM+%60cinema%60.%60acteur%60+WHERE+%60id%60+%3D+500&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+titre%2Cnom+AS+%27r%C3%A9alisateur+et+acteur%27+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60film%60.%60titre%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=film&sql_query=SELECT+titre%2Cnom+AS+%27r%C3%A9alisateur+et+acteur%27+FROM+%28film+JOIN+casting+ON+film.id%3Did_film%29%0AJOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+realisateur%3Did_acteur%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fgroup-by-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_counthttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+annee%2CCOUNT%28%2A%29+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id+JOIN+film+ON+id_film%3Dfilm.id+WHERE+nom%3D%22Bruce+Willis%22+GROUP+BY+annee%0AORDER+BY+%60film%60.%60annee%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+annee%2CCOUNT%28%2A%29+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id+JOIN+film+ON+id_film%3Dfilm.id+WHERE+nom%3D%22Bruce+Willis%22+GROUP+BY+annee%0AORDER+BY+COUNT%28%2A%29+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5ac

  • Lycée Claude Bernard 2014-2015 Informatique - T.P. n◦ 15 - Corrigé

    P a g e 11 | 15

    20) Lister dans l’ordre alphabétique les acteurs ayant eu au moins 10 rôles principaux.

    On n’a besoin cette fois que de la table casting (pour accéder au rang de l’acteur dans le casting, et de

    la table acteur pour pouvoir afficher le nom des acteurs) que l’on joint de la façon suivante :

    SELECT * FROM casting JOIN acteur ON id_acteur=acteur.id

    id_film id_acteur num id nom

    367 1876 12 1876 'Weird Al' Yankovic

    728 1876 1 1876 'Weird Al' Yankovic

    698 4235 2 4235 A.J. Langer

    On doit alors ne garder que les enregistrements relatifs aux rôles principaux :

    SELECT * FROM casting JOIN acteur ON id_acteur=acteur.id WHERE num=1

    id_film id_acteur num id nom

    1 552 1 552 Mark Hamill

    2 25 1 25 Tim Robbins

    3 34 1 34 John Travolta

    Puis compter, par acteur, le nombre de ces enregistrements :

    SELECT nom,COUNT(*) FROM casting JOIN acteur ON id_acteur=acteur.id WHERE

    num=1 GROUP BY acteur.id

    nom COUNT(*)

    Woody Allen 14

    Clint Eastwood 18

    Robert De Niro 18

    Sean Connery 19

    On sélectionne alors suivant la valeur de la fonction d’agrégation (On doit utiliser donc une clasue

    HAVING), puis on ordonne par ordre alphabétique sur le nom :

    SELECT nom,COUNT(*) FROM casting JOIN acteur ON id_acteur=acteur.id WHERE

    num=1 GROUP BY acteur.id HAVING COUNT(*)>=10 ORDER BY nom

    nom COUNT(*)

    Al Pacino 15

    Arnold Schwarzenegger 16

    Bruce Willis 12

    Clint Eastwood 18

    … [25 résultats]

    21) Lister les acteurs ayant joué sous la direction d’Alfred Hitchcock. Dans un premier temps, on pourra

    chercher l’identifiant d’Alfred Hitchcock, puis afficher les films qu’il a réalisés. Dans un deuxième

    temps, obtenir le même résultat avec une unique requête.

    En une seule requête, on peut tout d’abord à l’aide de trois jointures successives, obtenir la table

    suivante, dans laquelle, pour chaque enregistrement de la table casting, on dispose du réalisateur du film

    (par la jointure casting-film sur le prédicat id_film=film.id), du nom de l’acteur (par la jointure de la

    table précédente avec la table acteur sur le prédicat id_acteur=acteur.id) et du nom du réalisateur (par la

    jointure de la table précédente avec de nouveau la table acteur - pour laquelle on doit prendre un alias,

    acteur2, du fait de sa double utilisation, sur le prédicat realisateur=acteur2.id):

    SELECT * FROM ((casting JOIN film ON id_film=film.id) JOIN acteur ON

    id_acteur=acteur.id) JOIN acteur AS acteur2 ON realisateur=acteur2.id

    id_film id_acteur num id titre annee note nb_votes realisateur id nom id nom

    1 6 2 1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360 6 Harrison Ford 360 George Lucas

    1 462 3 1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360 462 Carrie Fisher 360 George Lucas

    1 552 1 1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360 552 Mark Hamill 360 George Lucas

    1 925 5 1 Star Wars Episode IV: A New Hope 1977 8.80 53567 360 925 Alec Guinness 360 George Lucas

    http://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60casting%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60casting%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60casting%60.%60num%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60acteur%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+num%3D1%0AORDER+BY+%60casting%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+num%3D1%0AORDER+BY+%60casting%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+num%3D1%0AORDER+BY+%60casting%60.%60num%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+num%3D1%0AORDER+BY+%60acteur%60.%60id%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+num%3D1%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fgroup-by-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_counthttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+nom%2CCOUNT%28%2A%29+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+num%3D1+GROUP+BY+acteur.id%0AORDER+BY+%60acteur%60.%60nom%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+nom%2CCOUNT%28%2A%29+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+num%3D1+GROUP+BY+acteur.id%0AORDER+BY+COUNT%28%2A%29+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fgroup-by-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_counthttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fgroup-by-functions.html&server=0&token=752fb39708f92510b12871d89608c5ac#function_counthttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+nom%2CCOUNT%28%2A%29+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+num%3D1+GROUP+BY+acteur.id+HAVING+COUNT%28%2A%29%3E%3D10%0AORDER+BY+%60acteur%60.%60nom%60++DESC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+nom%2CCOUNT%28%2A%29+FROM+casting+JOIN+acteur+ON+id_acteur%3Dacteur.id+WHERE+num%3D1+GROUP+BY+acteur.id+HAVING+COUNT%28%2A%29%3E%3D10%0AORDER+BY+COUNT%28%2A%29+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fselect.html&server=0&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28casting+JOIN+film+ON+id_film%3Dfilm.id%29+JOIN+acteur+ON+id_acteur%3Dacteur.id%29+JOIN+acteur+AS+acteur2+ON+realisateur%3Dacteur2.id%0AORDER+BY+%60casting%60.%60id_film%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28casting+JOIN+film+ON+id_film%3Dfilm.id%29+JOIN+acteur+ON+id_acteur%3Dacteur.id%29+JOIN+acteur+AS+acteur2+ON+realisateur%3Dacteur2.id%0AORDER+BY+%60casting%60.%60id_acteur%60+ASC&session_max_rows=25&token=752fb39708f92510b12871d89608c5achttp://localhost/phpmyadmin/sql.php?db=cinema&table=casting&sql_query=SELECT+%2A+FROM+%28%28casting+JOIN+film+ON+id_film%3Dfilm.id%29+JOIN+acteur+ON+id_acteur%3Dacteur.id%29+J