|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : mai 2007 Messages : 142 ![]() |
Bonjour tout le monde,
je cherche à concaténer plusieurs lignes en SQL (en utilisant un select). Les lignes à concaténer doivent avoir le même serviceId (voir exemple en dessous) g une table contact du genre: ___________________________________________________ contactId | serviceId | nom | prenom | tel .... ___________________________________________________ 01 | 1 |Charlotte| Glatemoutte| 0147140... _____________________________________________________ 02 | 1 | Roger | DuGland | 01 54 4 84 _____________________________________________________ 03 | 2 | Silvain | pipougnol | 06 35156151 ___________________________________________________ ou contactId est une clé primaire. Je cherche à obtenir un truc du genre (dans un select): _______________________________________________________ serviceId | Contacts ___________________________________________________________ 1 |(Charlotte Glatemoutte,0147140)(Roger DuGland,01 54 4 84) _________________________________________________________ 2 |(Silvain pipougnol ,06 35156151) ________________________________________________________ J'utilise mysql v1.1.19 Quelqu'un aurait une id ?
|
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Inscription : mai 2007 Messages : 142 ![]() |
Je viens de trouver la foncton GROUP_CONCAT :
________________________________________________ GROUP_CONCAT(expr) Syntaxe complète : GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]] [SEPARATOR str_val]) Cette fonction a été ajoutée en MySQL version 4.1. Elle retourne la chaîne résultant de la concaténation de toutes les valeurs du groupe : mysql> SELECT student_name, -> GROUP_CONCAT(test_score) -> FROM student -> GROUP BY student_name; ou : mysql> SELECT student_name, -> GROUP_CONCAT(DISTINCT test_score -> ORDER BY test_score DESC SEPARATOR " ") -> FROM student -> GROUP BY student_name; Avec MySQL, vous pouvez obtenir la concaténation d'une série d'expressions. Vous pouvez éliminer les doublons en utilisant DISTINCT. Si vous voulez trier les valeurs du résultat, il faut utiliser ORDER BY. Pour trier en ordre inverse, ajoutez le mot clé DESC (descendant) au nom de la colonne que vous triez dans la clause ORDER BY. Par défaut, l'ordre est ascendant. Cela peut être spécifié explicitement avec le mot clé ASC. SEPARATOR est une chaîne qui sera insérée entre chaque valeur du résultat. La valeur par défaut est une virgule ‘","’. vous pouvez supprimer le séparateur en spécifiant la chaîne vide SEPARATOR "". Vous pouvez donner une taille maximale à la variable group_concat_max_len de votre configuration. La syntaxe pour faire cela durant l'exécution est : SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer; Si une taille maximale a été atteinte, le résultat sera tronqué à cette taille maximale. Note : il y a encore de petites limitations pour GROUP_CONCAT() lorsqu'il faut utiliser des valeurs DISTINCT avec ORDER BY et et en utilisant les valeurs BLOB. Voyez Section 1.5.7.4, « Bugs connus / limitations de MySQL ». GROUP_CONCAT() a été ajoutée en MySQL 4.1. _______________________________________________ http://dev.mysql.com/doc/refman/5.0/...functions.html ________________________________________________ Je pense être sur la bonne piste |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com