227 votes

GROUP_CONCAT ORDER BY

J'ai une table comme

 client_id      views                  percentage
   1       6,4,9,2,7,5,3,8,1      20,55,56,67,80,66,33,34,52  
 

Je veux obtenir les points de vue dans l'ordre comme

 client_id      views                  percentage
    1       1,2,3,4,5,6,7,8,9     52,67,33,55,66,20,80,34,56
 

Et ma requête ressemble à

 SELECT li.clientid, group_concat(li.views) AS views, group_concat(li.percentage) FROM table_views GROUP BY client_id
 

479voto

aleroot Points 30853

Vous pouvez utiliser ORDER BY dans la fonction GROUP_CONCAT de la manière suivante:

 SELECT li.clientid, group_concat(li.views ORDER BY li.views ASC) AS views, 
group_concat(li.percentage ORDER BY li.percentage ASC) 
FROM table_views GROUP BY client_id
 

26voto

TetonSig Points 1236

Le group_concat supporte sa propre clause order by

http://mahmudahsan.wordpress.com/2008/08/27/mysql-the-group_concat-function/

Vous devriez donc pouvoir écrire:

 SELECT li.clientid, group_concat(li.views order by views) AS views,
group_concat(li.percentage order by percentage) 
FROM table_views GROUP BY client_id
 

17voto

Virendra Points 1878

Essayer

 SELECT li.clientid, group_concat(li.views ORDER BY li.views) AS views, group_concat(li.percentage ORDER BY li.percentage) FROM table_views li GROUP BY client_id
 

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function%5Fgroup-concat

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X