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 17/01/2012, 09h27   #1
Membre habitué
 
Homme
Enseignant
Inscription : avril 2002
Messages : 300
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2002
Messages : 300
Points : 100
Points : 100
Par défaut max et group by !

Bonjour,

J'ai un petit souci et je ne sais pas par quel bout le prendre !
J'ai une table contenant une liste d'animaux avec leur nom
par exemple

animal | nom
_____________
chien | rex
chien | medor
chat | minou
oiseau | piaf
chat | grisou
chien | ralph

Je souhaite effectuer une requête qui ajoute un champ donnant pour chacune des lignes le nombre maximal dans chaque catégorie.

animal | nom | nb
__________________
chien | rex | 3
chien | medor | 3
chat | minou |2
oiseau | piaf | 1
chat | grisou |2
chien | ralph |3

La fonction MAX avec GROUP BY peut le faire mais au lieu d'avoir les 6 lignes il n'y en a que 4 !

Comment faire ?

Merci
bastien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 09h41   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
bonjour,

il faut faire une sous-requete et faire une jointure avec cette même table.

Ensuite ce n'est pas un max que vous devez utilisez, pour réaliservotre sous-requête, mais un count(*).

Exemple :
Code :
1
2
3
4
5
 
SELECT categorie, item, nb_categorie
FROM ma_table a
INNER JOIN (SELECT categorie, count(*) AS nb_categorie
 FROM ma_table GROUP BY categorie) AS b ON a.categorie = b.categorie
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2012, 16h34   #3
Membre habitué
 
Homme
Enseignant
Inscription : avril 2002
Messages : 300
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2002
Messages : 300
Points : 100
Points : 100
ok
merci beaucoup
bastien 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 21h28.


 
 
 
 
Partenaires

Hébergement Web