Bonjour à tous,
Voici mon problème: Prenons par exemple ces tables:
J'ai besoin d'une requête qui me fournisse une ligne par projet, en concaténant les utilisateurs d'un même projet. Je veux donc comme résultat:PROJECT:
project_id project_name
PRJ00001 .....
PRJ00002 .....
PROJECTMEMBERS:
project_id user
PRJ00001 Jean
PRJ00001 Alexandre
PRJ00002 Albert
PRJ00002 Wilfried
PRJ00002 Dominique
Après avoir recherché je suis tombé sur ce sujet qui semble apporter la réponse, pour MSSQL :project_id users
"PRJ00001" "Jean, Alexandre"
"PRJ00002" "Albert, Wilfried, Dominique"
http://www.developpez.net/forums/d97...-sous-requete/
Hélas, je ne réussis pas à l'adapter à MySql.
Voici mes essais :
qui me retourne un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 DROP FUNCTION IF EXISTS MyConcat ; delimiter // CREATE FUNCTION MyConcat(projid varchar(50)) RETURNS varchar(500) BEGIN DECLARE TexteConcat varchar(500); SET TexteConcat = ''; SELECT TexteConcat = TexteConcat + user_id + ' ' FROM new_schema.project_members WHERE project_id = projid; RETURN TexteConcat; END // delimiter ;
Error Code: 1415
Not allowed to return a result set from a function
Alors soit je cherche encore et j'essaie d'ajouter un "INTO"
Création de la procédure OK, mais à l'appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 DROP FUNCTION IF EXISTS MyConcat ; delimiter // CREATE FUNCTION MyConcat(projid varchar(50)) RETURNS varchar(500) BEGIN DECLARE TexteConcat varchar(500); SET TexteConcat = ''; SELECT TexteConcat = TexteConcat + user_id + ' ' INTO TexteConcat FROM new_schema.project_members WHERE project_id = projid; RETURN TexteConcat; END // delimiter ; SELECT project_id, MyConcat(project_id) FROM new_schema.projects;
Error Code: 1172
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT project_id, MyConcat(project_id) FROM new_schema.projects;
Result consisted of more than one row
Alors depuis que je cherche il est temps de demander de l'aide...
- "A l'aide ?"
PS: j'ai aussi essayé d'envoyer "INTO" vers une variable qui n'est pas dans la boucle...
PS2: MySQL version 5.1
Partager