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 :

Exercices requêtes SQL (je coince)


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Exercices requêtes SQL (je coince)
    Bonsoir à tous,

    j'ai un énoncé avec correction mais je ne trouve pas comme la correction, pouvez vous m'éclairez svp, je vous met l'énoncé, les requêtes et la correction "officielle".

    EMP(ENO, ENOM, PROF, DATEEMB, SAL, COMM, DNO)

    ENO : numéro d'employé, clé
    ENOM : nom de l'employé
    PROF : profession (directeur n'est pas une profession)
    DATEEMB : date d'embauche
    SAL : salaire
    COMM : commission (un employé peut ne pas avoir de commission)
    DNO : numéro de département auquel appartient l'employé
    DEPT(DNO, DNOM, DIR, VILLE)

    DNO : numéro de département, clé
    DNOM : nom du département
    DIR : directeur du département (correspond à un n° d’employé)
    VILLE : lieu du département (ville)

    Requête 10 :
    Donner les noms des employés travaillant dans un département avec au moins un ingénieur.


    Correction :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT E2.ENOM 
               FROM EMP E1, EMP E2
              WHERE E1.DNO = E2.DNO
                    AND E1.PROF = 'INGÉNIEUR';
    Ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ENOM
       FROM EMP
       WHERE EMP.DNO = (
         SELECT EMP.DNO
            FROM EMP
            WHERE PROF = 'ingénieur' );
    Requête 11 : Donner le salaire et le nom des employés gagnant plus qu'un (au moins un) ingénieur.

    Correction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT E1.ENOM, E1.SAL 
               FROM EMP E1, EMP E2
              WHERE E2.PROF='INGENIEUR' 
                    AND E1.SAL > E2.SAL;
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ENOM, SAL FROM EMP
              WHERE SAL > ANY (SELECT SAL 
                                 FROM EMP
                                 WHERE PROF='INGENIEUR');

    Ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ENOM , SAL
      FROM EMP
         WHERE SAL > (
          SELECT MIN (SAL)
           FROM EMP
           WHERE PROF= 'ingénieur' );
    Requête 12 : Donner le salaire et le nom des employés gagnant plus que tous les ingénieurs.

    Correction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ENOM, SAL FROM EMP
              WHERE SAL > ALL (SELECT SAL 
                                 FROM EMP
                                 WHERE PROF='INGENIEUR');
    Ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ENOM, SAL FROM EMP
              WHERE SAL >  (SELECT MAX(SAL) 
                                 FROM EMP
                                 WHERE PROF='INGENIEUR');

    Ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ENOM , SAL
      FROM EMP
         WHERE SAL > (
          SELECT MAX (SAL)
           FROM EMP
           WHERE PROF= 'ingénieur' );

    Ps: je ne comprend rien à la correction, d'où sortent les "E1." "E2."...

    Je débute et merci d'avance pour toute contribution, aussi modeste soit-elle.

  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 : 44
    Localisation : France, Rhône (Rhône Alpes)

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

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

    Citation Envoyé par Celsoufre Voir le message
    Ps: je ne comprend rien à la correction, d'où sortent les "E1." "E2."...
    Il s'agit d'alias de table. Vous pouvez aussi utiliser la commande AS afin de renommer vos tables.
    Ici il s'applique aux tables mais cela peut aussi se faire pour renommer des colonnes.
    Dans des vues, pour faciliter la lecture, les jointures etc...

    « 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
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Les corrections proposées sont vraiment navrantes !

    Déjà, vous allez sortir de l'école avec plus de vingt ans de retard.
    Les jointures s'écrivent depuis 1992 comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT LesColonnes
    FROM Table1
    INNER JOIN Table2
        ON {condition de jointure}
    Je ne parle pas du fait qu'il manque une table PROFESSION dans votre modèle, c'est à la rigueur discutable...

    Mais :
    Pour la requete10, votre requête est mieux que la correction proposée qui va ressortir chaque nom autant de fois qu'il y a d'ingénieurs dans leur département...

    Même remarque pour la première correction de la requête 11.

    Pour la requête 12, votre solution est la même que la deuxième proposition de correction.

    Dernière remarque, toutes ces requêtes pourraient s'écrire avec des [NOT] EXISTS, il est dommage que les corrections ne les proposent pas...

Discussions similaires

  1. besoin d'aide pour un exercice (requêtes sql)
    Par stabii dans le forum Langage SQL
    Réponses: 15
    Dernier message: 30/01/2011, 00h00
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  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. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37
  5. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/02/2003, 16h44

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