choisir la ligne retournée par GROUP BY [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 05-11-2010 à 16:12:13
Pas à ma connaissance, faut faire une sous-requête avant la requête qui fait le group by.
Marsh Posté le 06-11-2010 à 14:54:19
Tu ajoutes un "Order by px" et la première ligne retournée sera celle avec le plus petit px
Marsh Posté le 07-11-2010 à 00:03:47
Je pense que le monsieur veut pouvoir choisir la ligne retournée pour chaque regroupement effectué par group by
Marsh Posté le 08-11-2010 à 08:30:21
rufo a écrit : Je pense que le monsieur veut pouvoir choisir la ligne retournée pour chaque regroupement effectué par group by |
Exact, le ORDER BY organise les résultats du GROUP BY .
Merci pour vos réponses, je vais faire une sous-requete.
Marsh Posté le 08-11-2010 à 15:25:48
On notera qu'un sgbd raisonnable enverra promener quiconque se pointe avec la requête d'origine, en se plaignant qu'il y a des champs non groupables dans le select, au lieu de prendre une valeur au pif.
Marsh Posté le 08-11-2010 à 18:05:24
ah, les sgbd sont plus ce qu'ils étaient. Eux aussi deviennent laxistes
Marsh Posté le 08-11-2010 à 18:07:35
C'est pas comme si c'était nouveau pour mysql...
Marsh Posté le 09-11-2010 à 17:09:07
pas besoin d'une sous-requête pour moi (enfin en oracle pas besoin)
Code :
|
devrait suffire non?
Mais il nous manque surtout le principal : que doit faire la requête exactement (description textuelle)
Marsh Posté le 09-11-2010 à 17:16:22
dreameddeath a écrit : pas besoin d'une sous-requête pour moi (enfin en oracle pas besoin)
|
Ta requête ne retourne pas tous les champs.
Marsh Posté le 09-11-2010 à 20:08:51
pourquoi retourner tous les champs en faisant un group by ? C'est une mauvaise utilisation du SQL pour moi...
En group by, on ne peut soit faire des min, max, sum, ... mais pas directement la liste de des champs : si tu veux tous les champs tu fais un group by [tous les champs] mais ça ne sert à rien...
Alors, pourquoi tu veux faire un "group by" (en gros ta requête a quel objectif ?)
Marsh Posté le 10-11-2010 à 15:03:19
hutarios a écrit : |
en fait l'objectif est d'avoir les valeurs de 'id', 'px', 'des' et 'revendeur' pour chaque 'revendeur' ou 'code'=220 et le 'px' est le plus petit, pour une valeur de 'code' il peut y avoir un ou plusieurs 'revendeur' avec chacun un ou plusieurs 'des' différents.
Marsh Posté le 05-11-2010 à 15:53:42
Bonjour,
il a t'il une possibilité de choisir la ligne retourné par un group by ?
je m'explique, GROUP BY me retourne une ligne par valeur distincte, est-il possible de choisir la ligne en fonction d'une autre valeur de cette ligne ou le GROUP BY retourne toujours la première ligne rencontrée dans la table ?
ex :
id | px | code | des | revendeur
1 | 33 | 220 | 220u | AA
2 | 32 | 220 | 220u | BB
3 | 30 | 220 | 220y | AA
4 | 33 | 220 | 220u | CC
SELECT * FROM table WHERE code=220 GROUP BY revendeur
ça me retourne les lignes 1,2 et 4
a la place de la ligne 1 je voudrai la 3 (celle ou 'px' est le plus petit)
Message édité par hutarios le 05-11-2010 à 15:58:09