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 :

Problèmes exercice avec des sous-requêtes


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 67
    Points : 108
    Points
    108
    Par défaut Problèmes exercice avec des sous-requêtes
    Bonjour,

    Face à l'impossibilité de réaliser 2 requêtes, je sollicite votre aide

    Tout d'abord, je dois : Pour les employés dont le salaire excède celui de leur MANAGER, lister, le nom de ces employés, leur salaire, le nom et le salaire de leur MANAGER

    Voila ma requête :
    select *
    from emp, dept
    where emp.deptno=dept.deptno and emp.deptno=20 and sal > (select sal from emp, dept where emp.deptno=dept.deptno and emp.deptno=20 and job='MANAGER');

    Elle ne répond pas à la question mais dans ce cas, je suis obligé de choisir un numéro de département ici 20 car une sous-requête ne peut retourner plus d'une ligne or je dois répondre à cette question via une seule requête. Auriez-vous des idées ?

    De la même manière, je n'arrive pas à répondre à cette question : Trouver tous les employés du dept 10 qui ont le même JOB que ceux du département 30.

    select ename
    from emp
    where deptno=10 and job= (select job from emp where deptno=30);

    J'ai le même problème, un message d'erreur m'indiquant que la sous-requête ne peut retourner qu'une seule ligne...

    Je suis sous SQL Developer et voici les tables. Merci par avance pour votre aide

    Nom : EMP.JPG
Affichages : 340
Taille : 58,6 KoNom : DEPT.JPG
Affichages : 244
Taille : 15,6 Ko

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Pour votre premier besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select A.empno
          ,A.ename
          ,A.sal 
          ,A.mgr
          ,B.sal
    from emp A
    inner join emp B
       on B.emp = A.mgr
    where B.sal < A. sal
    order by -- si vous voulez trier votre résultat
    Pour l'autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select A.empno
          ,A.ename
    from emp A
    where A.DEPTNO = 10
      and exists
         (select 0 from emp b
          where b.job = a.job
            and b.deptno = 30)
    Note : prenez l'habitude de ne pas coder de requete "select *", c'est pratique pour les tests, mais vous sélectionnez des colonnes inutiles ce qui pénalise les perfs, de plus, si vos tables ou vos vues évoluent, le résultat de votre requête est impacté.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 67
    Points : 108
    Points
    108
    Par défaut
    Bonjour,

    Merci de votre aide, j'ai tenté les 2 requêtes et la seconde fonctionne merci beaucoup cependant la première ne marche pas. Par ailleurs, j'ai bidouillé un peu cette dernière et ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT t1.ENAME as EmployeeName, t1.SAL as EmployeeSalary, t2.ENAME as ManagerName, t2.SAL as ManagerSalary
    FROM emp t1
    INNER JOIN emp t2
    on t1.MGR = t2.EMPNO
    WHERE t1.SAL > t2.SAL;
    En tout cas merci beaucoup et bon week-end

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Je ne vois pas la différence entre votre requête et la mienne (aux alias près) mais bon l'essentiel est que vous ayez réussi, bon WE

Discussions similaires

  1. Problème pour relier des sous-requêtes
    Par chart dans le forum Requêtes
    Réponses: 4
    Dernier message: 31/07/2014, 14h00
  2. Probleme de tri avec des sous requêtes
    Par kamnouz dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/04/2010, 10h03
  3. Réponses: 2
    Dernier message: 02/04/2008, 09h59
  4. Problème avec des sous requêtes
    Par nicocolt dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/10/2007, 15h19
  5. fichier .bat : problèmes avec des sous-répertoires
    Par aymron dans le forum Windows
    Réponses: 4
    Dernier message: 23/06/2005, 09h33

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