IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Établissement d'une requête


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Femme Profil pro
    Urbaniste
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Établissement d'une requête
    bonsoir, je suis débutant en SQL, je suis tombé sur cet exercice ou je reste bloqué sur ces 2 questions. et je voudrais de l'aide ou des éclaircissements pour décanter la situation. toute aide serait la bienvenue. MERCI d'avance

    *****************************************************
    Soit le schéma de base suivant :
    Acteurs (numéroActeur, nomActeur, ageActeur)
    Films (numéroFilm, titreFilm, nombreEntrées)
    Joue (numéroFilm, numéroActeur)

    NombreEntrées est un attribut qui permet de comptabiliser le nombre d’entrées de spectateurs pour un film donné (un spectateur ayant vu plusieurs fois le même film est comptabilisé plusieurs fois). Un acteur bien évidement peut jouer dans plusieurs films et plusieurs acteurs peuvent jouer dans un même film.
    Exprimer en SQL les requêtes suivantes

    iii) Donner les numéros et noms des acteurs ayant joué dans tous les films ayant générés plus de 100 000 entrées.

    v) Quels sont les numéros et noms des acteurs ayant un âge moins que celui de l’acteur 'Idriss Rouch'.

    vi) Afficher les acteurs (numeroActeur, nomActeur) qui ont joué dans au moins 5 films.
    *******************************************************

    Pour la question iii) la solution que je propose serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select NumActeur,NomActeur
    from ( select numActeur,nomActeur,count(*) Nbre
             from Acteurs,joue
             where Acteurs.numActeur=joue.numActeur
             and numFilm in (select numFilm from Films 
                                     where NombreEntrées>100000)
             group by numActeur)
    where Nbre=(select count(*) from Film
                       where NombreEntrées>100000)
    mais je n'en suis pas convaincu, quant à la question v) je ne trouve pas de solution

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Ta réponse devrait fonctionner même si elle n'utilise pas les jointures normalisées . Pour le fun je te donne une autre écriture de la même requête sans count. Si l'acteur a tourné dans tous les films ayant réalisé 100000 entrée c'est qu'il n'y a aucun film ayant réalisé 100000 entrée dans lequel il n'a pas tourné.[edit] Cette requete ne donne pas le bon résultat désolée[/edit]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select Distinct numActeur, A.nomActeur
    from  acteurs A
     
    where  not exists (	select null
    			from joue J2
    			inner join film f2
    				on J2.NumFilm=F2.NumFilm
    			where F2.NombreEntrées>100000
    		and J2.numActeur=A.numActeur
    		)
    Pour la question v/ Il faut découper la question en morceau.
    Quel age à 'Idriss Rouch'.
    réponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select ageActeur
    from Acteurs
    where nomActeur='Idriss Rouch'
    Donc quels sont les acteurs moins agé que lui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select numActeur,nomActeur
    from Acteurs A1
    inner join (Select ageActeur as ageIdriss
    from Acteurs A2
    where nomActeur='Idriss Rouch') As T
    on A1.ageActeur<T.ageIdriss
    Pour la question vi/ Découpe aussi le problème et calcule d'abord dans combien de films ont tournés chaque acteur, puis limite le nombre (un indice having count est ton ami)

    A+
    Soazig

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Désolée, pour la réponse à la question 3 j'ai écrit une anerie, j'ai listé les acteurs n'ayant tourné dans aucun des films ayant eu le nombre d'entrée requis, je ferai mieux de m'abstenir de poster après 22h.
    Pour ma culture j'essaierai d'écrire la requête avec des exists mais je suis trop fatiguée ce soir.
    a+
    Soazig

  4. #4
    Candidat au Club
    Femme Profil pro
    Urbaniste
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    je ne saurai dire ce que veut signifier ces requetes, car nous n'avons pas encore vu ces mots clés de sql : inner join
    mais merci d'après pris un peu de temps pour répondre a mon message

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Pour le mot clé inner join c'est le moyen de faire les jointures pour plus d'informations:
    http://sqlpro.developpez.com/cours/sqlaz/jointures/
    Pour faire simple
    from table1
    inner join table2
    on table1.clef=table2.clef est équivalent à

    from table1,table2
    whre table1.clef=table2.clef

    mais la première écriture est plus lisible.

    Et la requête iii à laquelle je pensais est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  numActeur, A.nomActeur
    FROM  acteurs A 
    WHERE  NOT EXISTS (	select numFilm from film f2
    where F2.NombreEntrées>100000
    and not exists (select joue j2
    where A.numActeur=j2.numActeur)
    pour la v cela peut aussi s'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT numActeur,nomActeur
    FROM Acteurs A1
    , (SELECT ageActeur AS ageIdriss
    FROM Acteurs A2
    WHERE nomActeur='Idriss Rouch') AS T
    where A1.ageActeur<T.ageIdriss
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT numActeur,nomActeur
    FROM Acteurs A1
    where A1.ageActeur< (SELECT ageActeur AS ageIdriss
    FROM Acteurs A2
    WHERE nomActeur='Idriss Rouch')
    As-tu essayé de faire la requete vi en utilisant mes indications
    a+
    Soazig

Discussions similaires

  1. Problème dans l'établissement d'une requête
    Par M€lK!oR dans le forum Requêtes
    Réponses: 7
    Dernier message: 16/12/2009, 14h11
  2. Aide pour établissement d'une requête
    Par Virgile59 dans le forum Access
    Réponses: 2
    Dernier message: 28/02/2006, 18h55
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. Proposer le resultat d'une requête en téléchargement
    Par Lux interior dans le forum XMLRAD
    Réponses: 5
    Dernier message: 17/02/2003, 15h44
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo