Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/11/2010, 11h22   #1
Invité de passage
 
Inscription : août 2007
Messages : 19
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 19
Points : 2
Points : 2
Par défaut Récuperer le max d'un select

bonjour,
j'ai un requête

Code :
1
2
3
4
5
SELECT  t2.dname, count(t1.deptno) nbr_employès 
FROM emp t1, dept t2 
WHERE (t1.sal < 1500 
  AND t1.deptno = t2.deptno) 
GROUP BY t1.deptno
Qui me renvoi plusieurs lignes
je souhaite seulement afficher la ligne ou il y le nbr_employès est le plus important
Comment faire ?
Yann
Yann_br est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 11h48   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 957
Points : 18 163
Points : 18 163
Envoyer un message via MSN à CinePhil
Citation:
je souhaite seulement afficher la ligne ou il y le nbr_employès est le plus important
Tu souhaites compter le nombre d'employés par département et afficher seulement le plus grand ?

Alors ton groupage est à faire sur t2.dname et non pas sur t1.depno. D'ailleurs, un autre SGBD que MySQL n'aurait probablement pas accepté que la colonne du SELECT ne faisant pas l'objet de la fonction de regroupement ne figure pas dans le GROUP BY !
MySQL est trop laxiste sur ce point.

Astuce fonctionnant sous MySQL : classer les résultats en ordre descendant et ne garder que la première ligne de résultat :
Code :
1
2
3
4
5
6
7
SELECT t2.dname, count(*) nbr_employès 
FROM emp t1
INNER JOIN dept t2 ON t1.deptno = t2.deptno
WHERE t1.sal < 1500 
GROUP BY t2.dname
ORDER BY count(*) DESC
LIMIT 1
Au passage, remarque la syntaxe normalisée depuis 1992 pour les jointures.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 11h56   #3
Invité de passage
 
Inscription : août 2007
Messages : 19
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 19
Points : 2
Points : 2
Merci pour la réponse
Yann_br est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h52.


 
 
 
 
Partenaires

Hébergement Web