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

Requêtes MySQL Discussion :

problème sur une requête imbriquée


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut problème sur une requête imbriquée
    Bonjour,
    Je voudrais à partir de ma requête le nom du salarié qui gagne le plus d'argent. Donc, j'ai ecrit cette requête:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nomemp FROM employes WHERE sala=(SELECT max(sala) FROM employes)
    Mais phpMyAdmin de wamp de renvoie une erreur
    #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT max(sala) FROM employes)' at line 1
    Je ne vois pas si c'est ma syntaxe qui présente des erreurs. En général cette syntaxe doit fonctionner pour sql, mais est ce différent pour Mysql?Est ce que quelqu'un peut m'aider à résoudre ce problème?
    Je vous remercie à l'avance
    pbatty

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 901
    Points : 6 026
    Points
    6 026
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nomemp FROM employes WHERE sala IN (SELECT max(sala) FROM employes)
    Comme le max ne renvoie qu'un tuple, ça marchera.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    quelle version de mysql? elle accepte les sous requetes?

  4. #4
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par qi130 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nomemp FROM employes WHERE sala IN (SELECT max(sala) FROM employes)
    Comme le max ne renvoie qu'un tuple, ça marchera.
    Un max utilisé comme ça donne bien une valeur unique et je viens de valider la syntaxe de pbatty1 sur mon mysql 5.0.45. Du coup je penserais aussi très fort à la version de mysql.

    Sinon je me demande si sur certaines versions plus anciennes l'utilisation d'une table dans une requête et une requête imbriquée n'oblige pas à lui donner un alias dans au moins l'une des deux.

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Points : 149
    Points
    149
    Par défaut
    Quelque chose du style ne serait pas mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nomemp FROM employes GROUP BY sala HAVING sala = max(sala)
    Cartes Pokémon, Yugioh, Magic ?
    Communauté d'échange

  6. #6
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par qi130 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nomemp FROM employes WHERE sala IN (SELECT max(sala) FROM employes)
    Comme le max ne renvoie qu'un tuple, ça marchera.
    J'ai testé ce code et ca ne marche pas phpMyAdmin me retourne toujours
    #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT max(sala) FROM employes)' at line 1
    J'ai Mysql 4.0

  7. #7
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par kangaxx Voir le message
    Quelque chose du style ne serait pas mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nomemp FROM employes GROUP BY sala HAVING sala = max(sala)
    J'ai testé ce code et ça ne fonctionne pas non plus. phpMyAdmin affiche le message suivant
    #1054 - Unknown column 'sala' in 'having clause'
    . J'ai deja eu le même problème sur une autre requête. des que tu mets un nom de champs dans having ça ne fonctionne pas, or en mettant juste une fonction comme avg, sum, max ca marche. Ex having max(sala)>150000

  8. #8
    Nouveau membre du Club Avatar de Shinn77
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Points : 36
    Points
    36
    Par défaut
    tu peux nous indiquer à quoi ressemble ta table employes ?

    Merci
    Shinn77, Till the End of Time

    "Celui qui sait qu'il ne sait pas, éduque le."
    "Celui qui sait qu'il sait, écoute le."
    "Celui qui ne sait pas qu'il sait, éveille le."
    "Celui qui ne sait pas qu'il ne sait pas, fuis le."

  9. #9
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Shinn77 Voir le message
    tu peux nous indiquer à quoi ressemble ta table employes ?

    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EMPLOYES(NoEmp, NomEmp,Fonction,NoResp,Sala,Comm)
    Est ce que MySql 4.0 supporte les sous requêtes?

  10. #10
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Citation Envoyé par pbatty1 Voir le message
    Est ce que MySql 4.0 supporte les sous requêtes?
    non il faut passer en version 4.1

  11. #11
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Cybher Voir le message
    non il faut passer en version 4.1
    Entre temps, comment je fais pour résoudre ma requête? en utilisant peut etre les inner join!

  12. #12
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par pbatty1 Voir le message
    Entre temps, comment je fais pour résoudre ma requête? en utilisant peut etre les inner join!
    Plusieurs options. Une jointure c'est possible mais tordu et pas vraiment efficace. Autant faire deux requêtes, ça ira au moins aussi vite (sauf très petit nombre d'employé peut-être) et ça ne sera pas plus compliqué.

    Si ne pas voir les ex aequo n'est pas un problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT nomemp, sala FROM employes ORDER BY sala DESC LIMIT 1
    Sinon peut-être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT GROUP_CONCAT(nomemp), sala FROM employes GROUP BY sala ORDER BY sala DESC LIMIT 1

  13. #13
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Sivrît Voir le message
    Plusieurs options. Une jointure c'est possible mais tordu et pas vraiment efficace. Autant faire deux requêtes, ça ira au moins aussi vite (sauf très petit nombre d'employé peut-être) et ça ne sera pas plus compliqué.

    Si ne pas voir les ex aequo n'est pas un problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT nomemp, sala FROM employes ORDER BY sala DESC LIMIT 1
    Sinon peut-être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT GROUP_CONCAT(nomemp), sala FROM employes GROUP BY sala ORDER BY sala DESC LIMIT 1
    ça marche, je te remercie.

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

Discussions similaires

  1. problème sur une requête imbriquée MATCH
    Par titiplanti dans le forum Requêtes
    Réponses: 0
    Dernier message: 21/09/2010, 15h16
  2. Problème sur une requête imbriquée
    Par slake13 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/03/2009, 21h46
  3. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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