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 :

petit exercice sql


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 151
    Par défaut petit exercice sql
    Bonjour,

    j'ai ce petit exercice a rendre pour demain

    pouvez vous me dire si ce que j'ai fait est exact ou non
    pour les jointures ce n'est pas le plus grave, je verrais apres mais est-ce que je repond a la question et la syntaxe est-elle bonne ??

    Modèle relationnel

    Compagnie(numComp,nomComp,nationaliteComp)
    Pilote(numPilote,nomPilote,adrPil,salPil,dateEmbPil,numCompPil)
    Avion(numAvion,typeAvion,dateMiseServiceAvion,nbPlacesAvion,numCompAvion)
    Aeroport(codeAer,nomAeroport,villeAeroport)
    Vol(numVol,dateVolhrDep,hrArr,codeAerDep,codeAerArr,numPiloteVol,numAvionVol)


    Requete 1: Presentez le nombre de vols realise par chaque compagnie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT nomComp, count(numVol)
    FROM COMPAGNIE C,VOL V,PILOTE P
    WHERE V.numVol=P.numPilote
    AND P.numCompPil=C.numComp
    AND V.numVol=C.nomComp;
    Requete 2: Déterminez le salaire moyen des pilotes par compagnie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT nomComp,AVG(salPil)
    FROM PILOTE P,COMPAGNIE C
    WHERE P.numPilote=C.numComp
    GROUP BY C.nomComp;

    Requete 3: Recherchez le salaire maximum par compagnie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nomComp,MAX(salPil)
    FROM PILOTE P,COMPAGNIE C
    GROUP BY C.nomComp;
    Requete 4: Classez les compagnie par nombre d'avions décroissant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT nomComp,COUNT (numCompAvion)
    FROM COMPAGNIE C,AVION A
    WHERE A.numAvion=C.numComp
    ORDER BY DESC;
    Merci bien de vos reponses

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonsoir,

    1/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT nomComp
                , count(numVol)
     
    FROM COMPAGNIE C
           ,VOL V
           ,PILOTE P
     
    WHERE
    /* Je ne pense pas que tu ais besoin de tout cela */ 
           V.numVol=P.numPilote
    AND P.numCompPil=C.numComp
     
    /* Cette jointure ne suffirait-elle pas ? */
    AND V.numVol=C.nomComp
    ;
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 042
    Billets dans le blog
    6
    Par défaut
    Beacoup d'ohheur dès le première requête :
    1) les jointures se font avec des JOIN. La syntaxe en mettant toutes les table dans la clause from et en faisant les jointures dans la clause WHERE date d'avant 1992, soit 16 ans de retard !
    2) si fonction d'agrégat avec colonne non agégée, alors il faut une clause GROUP BY :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT nomComp, count(numVol)
    FROM   COMPAGNIE C
           INNER JOIN PILOTE P
                 ON C.nomComp = P.numCompPil
           INNER JOIN VOL V
                 ON P.numPilote = V.numPiloteVol
    GROUP  BY nomComp
    Bref, du boulot en perspective pour votre week end, car franchement pas joli !
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 151
    Par défaut
    @Chtulus: non car le lien entre la table compagnie et la table Vol n'existe pas et je suis oblige de passe par la table Pilote pour pouvoir faire la jointure (enfin c'est comme ça que je le vois)

    ensuite

    @SQLpro : pour 1) les jointures se font avec des JOIN. La syntaxe en mettant toutes les table dans la clause from et en faisant les jointures dans la clause WHERE date d'avant 1992, soit 16 ans de retard !

    bha il faudrait que je le dise a mon prof de GSI :p je ne le savais pas en attendant je suis obligé d'utiliser cette syntaxe c'est comme ceci qu'on fait en cours
    Sinon mes requetes sont -elles bones dans "l'esprit" je veux dire est-ce que je répond a la question qu'on me pose ??? en gros est-ce que mes requêtes font ce qu'on me demande ?? ou il manques certaines choses ??

  5. #5
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Heu !!!

    @SQLpro, les jointures il en avait parlé...

    @antoine974
    Par contre je crois que ton prof devrait prendre des cours...
    non car le lien entre la table compagnie et la table Vol n'existe pas
    Alors à quoi te sert :
    Je crois qu'il doit y avoir un gros soucis de conception ou de compréhension !!!

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  6. #6
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Suivez les conseils de SQLPro, les fonctions d'aggrégat se doivent d"etre utilisées avec une clause de regroupement GROUP BY
    De plus, ORDER BY DESC est syntaxiquement incorrect.

    Quand aux jointures dite explicites, elles vous permettront sans aucun doute de ne pas faire d'erreur de jointure lorsque vous passerez a des requetes un peu plus compliquées.

    Bon courage

Discussions similaires

  1. petit exercices sur les requetes sql
    Par michaelm1 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/12/2008, 12h57
  2. [Exercices SQL] requêtes
    Par titecherie02 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 21/02/2006, 13h53
  3. des exercices SQL SERVER7 SVP..
    Par jeune85 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/01/2006, 16h15
  4. problemes exercices sql
    Par siciliano_messinese dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/09/2005, 16h52
  5. Petit probleme sql
    Par maxxou dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/03/2005, 11h49

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