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

SQL Oracle Discussion :

Souci requête


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2010
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 222
    Par défaut Souci requête
    Bonjour ,
    j'ai un petit soucis : 3 Tables, FONCTION ([Numfonct], libfonct, salaire) / SERVICE ([Numserv],libserv) / EMPLOYE ([Numemp,nom,prenom,numfonct,numserv).
    je cherche a avoir pour chaque service l'employé qui a le plus gros... salaire !
    voici ce que j'ai commencé mais je bloque sur les noms et prenoms , il retourne tous les noms et prenoms
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select max(tmp.sal)sal,tmp.ser,tmp.nomm,tmp.pren
    from(
    select salaire sal , service.numserv ser , employe.nom nomm , employe.prenom pren
    from fonction 
    inner join employe on employe.numfonct=fonction.numfonct 
    inner join service on service.numserv=employe.numserv
    GROUP BY service.numserv,salaire,employe.nom,employe.prenom
    )tmp
    group by tmp.ser,tmp.nomm,tmp.pren

  2. #2
    Membre extrêmement actif
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Billets dans le blog
    6
    Par défaut
    bonjour

    peux tu donner un exemple concret?

  3. #3
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    Inverse ta requête :

    Cherche les plus gros salaire 'max(tmp.sal)sal' par service 'Numserv' uniquement (sous-requête), ET joint-la en utilisant une jointure à la fois sur le 'Numserv' ET 'Sal' sur les tables concernées.

  4. #4
    Membre chevronné
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Par défaut
    je cherche a avoir pour chaque service l'employé qui a le plus gros... salaire !
    Comme le salaire dépend de la fonction, que faire si il y a plusieurs employés dans un service qui ont la même fonction la plus rémunérée ? Tu veux tous les afficher ?

    Après (comme te l'avais déjà dit Lyche), tu ne peux pas faire un GROUP BY sur nom, prénom car l'identifiant unique c'est l'ID de l'employé et pas le nom prénom

  5. #5
    Membre très actif
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2010
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 222
    Par défaut
    voici un exemple je vais chercher encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LIBSERV                        NOM                  PRENOM               
    ------------------------------ -------------------- --------------------  
    Comptabilité                   Cantou               Bernard                
    Ressources Humaines            Bleuet               Dominique              
    Ressources Humaines            Blanc                Maxime                 
    Production                     Deliat               Justine

  6. #6
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    Sous-requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT service.numserv, MAX(salaire) as Sal
       FROM fonction 
          INNER JOIN employe ON employe.numfonct=fonction.numfonct 
          INNER JOIN service ON service.numserv=employe.numserv
    GROUP BY service.numserv
    la requête principale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT nom, prenom, service.LIBSERV
    FROM (.. la sous-requête ) tmp
       INNER JOIN service on service.numserv = tmp.numserv
         INNER JOIN fonction on fonction.salaire=tmp.sal
           INNER JOIN employe on employe.numfonct = fonction.numfonct  AND employe.numserv = service.numserv
    en tout cas quelque chose d'approchant

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bonjour,

    Selon le SGBD on pourrai utiliser uen fonctions analytiques / groupage avancé (keep) qui permettrai d'éviter la sous-requête.

  8. #8
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    Et quand est-il de celle que j'avais proposée ?

    Citation Envoyé par dehorter olivier Voir le message

  9. #9
    Membre extrêmement actif
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par doumbix Voir le message
    voici un exemple je vais chercher encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LIBSERV                        NOM                  PRENOM               
    ------------------------------ -------------------- --------------------  
    Comptabilité                   Cantou               Bernard                
    Ressources Humaines            Bleuet               Dominique              
    Ressources Humaines            Blanc                Maxime                 
    Production                     Deliat               Justine
    tu fais une simple jointure entre la table service et la table employe.

  10. #10
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    Citation Envoyé par boussafi Voir le message
    tu fais une simple jointure entre la table service et la table employe.
    Non, il a besoin de :
    je cherche a avoir pour chaque service l'employé qui a le plus gros... salaire !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Souci requête sql !
    Par Lenou dans le forum Langage SQL
    Réponses: 13
    Dernier message: 09/12/2010, 14h46
  2. Souci requête SQL
    Par marime dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 16/06/2009, 18h46
  3. VB + Excel + SQL + Soucis requête avec des dates
    Par Invité dans le forum Excel
    Réponses: 2
    Dernier message: 12/03/2009, 08h15
  4. [SQL] Soucis requête SQl sur serveur Free
    Par Ryuuku dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/08/2007, 16h20
  5. [Débutant]Soucis requête jointure externes (8-i)
    Par jdotti dans le forum Oracle
    Réponses: 7
    Dernier message: 14/10/2005, 15h39

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