Considérons une table de base de données contenant des noms, avec trois rangées :
Peter
Paul
Mary
Existe-t-il un moyen simple de transformer cela en une chaîne unique de Peter, Paul, Mary
?
Dans MySQL, il existe une fonction, [GROUP_CONCAT()][1], qui vous permet de concaténer les valeurs de plusieurs lignes. Exemple :
SELECT 1 AS a, GROUP_CONCAT(name ORDER BY name ASC SEPARATOR ', ') AS people
FROM users
WHERE id IN (1,2,3)
GROUP BY a
[1] : http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
Une façon de le faire en SQL Server serait de renvoyer le contenu de la table en XML (pour XML brut), de convertir le résultat en une chaîne de caractères et de remplacer les balises par ", ".
Cela dépend du fournisseur de votre base de données. MySQL dispose de concat_ws. MS SQL Server attend de vous que vous le fassiez dans votre application client.
Mise à jour : vous pouvez également le faire dans une procédure externe ou UDF, peut-être en utilisant un curseur ou en faisant appel au code CLR.