Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1522 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] choisir la ligne retournée par GROUP BY

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] choisir la ligne retournée par GROUP BY

n°2034287
hutarios
Posté le 05-11-2010 à 15:53:42  profilanswer
 

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 cité 1 fois
Message édité par hutarios le 05-11-2010 à 15:58:09
mood
Publicité
Posté le 05-11-2010 à 15:53:42  profilanswer
 

n°2034296
rufo
Pas me confondre avec Lycos!
Posté le 05-11-2010 à 16:12:13  profilanswer
 

Pas à ma connaissance, faut faire une sous-requête avant la requête qui fait le group by.


Message édité par rufo le 05-11-2010 à 16:12:41

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2034413
chris500
Posté le 06-11-2010 à 14:54:19  profilanswer
 

Tu ajoutes un "Order by px" et la première ligne retournée sera celle avec le plus petit px  :o


---------------
Homme, tu n'es que poussière. Thon, tu n'es que miettes.
n°2034449
rufo
Pas me confondre avec Lycos!
Posté le 07-11-2010 à 00:03:47  profilanswer
 

Je pense que le monsieur veut pouvoir choisir la ligne retournée pour chaque regroupement effectué par group by


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2034577
hutarios
Posté le 08-11-2010 à 08:30:21  profilanswer
 

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.

n°2034709
skeye
Posté le 08-11-2010 à 15:25:48  profilanswer
 

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.:o


---------------
Can't buy what I want because it's free -
n°2034773
rufo
Pas me confondre avec Lycos!
Posté le 08-11-2010 à 18:05:24  profilanswer
 

ah, les sgbd sont plus ce qu'ils étaient. Eux aussi deviennent laxistes :lol:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2034774
skeye
Posté le 08-11-2010 à 18:07:35  profilanswer
 

C'est pas comme si c'était nouveau pour mysql...:D


Message édité par skeye le 08-11-2010 à 18:07:41

---------------
Can't buy what I want because it's free -
n°2035026
dreameddea​th
Posté le 09-11-2010 à 17:09:07  profilanswer
 

pas besoin d'une sous-requête pour moi (enfin en oracle pas besoin)

Code :
  1. select min(px),revendeur from table where code = 220 group by revendeur;


 
devrait suffire non?
 
Mais il nous manque surtout le principal : que doit faire la requête exactement (description textuelle)

n°2035027
skeye
Posté le 09-11-2010 à 17:16:22  profilanswer
 

dreameddeath a écrit :

pas besoin d'une sous-requête pour moi (enfin en oracle pas besoin)

Code :
  1. select min(px),revendeur from table where code = 220 group by revendeur;


 
devrait suffire non?


Ta requête ne retourne pas tous les champs.:o
 
 


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 09-11-2010 à 17:16:22  profilanswer
 

n°2035055
dreameddea​th
Posté le 09-11-2010 à 20:08:51  profilanswer
 

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 ?)

n°2035268
hutarios
Posté le 10-11-2010 à 15:03:19  profilanswer
 

hutarios a écrit :


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)


 
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.


Message édité par hutarios le 10-11-2010 à 15:03:49

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] choisir la ligne retournée par GROUP BY

 

Sujets relatifs
Copier une base MySQL dans SQL Server 2008 [Resolu][SQL] Substring + Charindex/Patindex
Script pour visualiser base de donnée SQL serverRequête SQL pour un unique id
[SQL] Base chez Free intérogée par autre site[SQL][Qt] Requet pour compter les colonnes ?
[PL/SQL] Aditeur avec coloration syntaxiqueRequete SQL sur date PHP
Application en ligne et USB HID classPB SQL
Plus de sujets relatifs à : [MySQL] choisir la ligne retournée par GROUP BY


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR