Bonjour, je suis en train de construire une function en MySQL et je dois boucler sur un SELECT.

Je fais ceci pour le moment

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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
DELIMITER $$
 
DROP FUNCTION IF EXISTS `pontaury`.`calcul_l_deux`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `calcul_l_deux`(date1 date,date2 date,item varchar (255),groupe varchar (255)) RETURNS varchar(255)
BEGIN
  DECLARE resultat varchar(255)  DEFAULT 0;
  DECLARE iSum BIGINT;
  DECLARE id_cursor BIGINT;
  DECLARE fini TINYINT DEFAULT 0;
  DECLARE cur1 CURSOR FOR SELECT
                    DISTINCT(heures.id_participant)  
                    FROM heures
                        INNER JOIN dossier
                           ON dossier.id_participant = heures.id_participant
                    WHERE heures_date BETWEEN '2009-05-01' AND '2009-05-31'
                    AND dos_groupe IN ('Menuiserie');
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET fini = 1;
 
	OPEN cur1;
		BOUCLE: REPEAT
		FETCH cur1 INTO id_cursor;
			IF (id_cursor IS NULL)THEN
				LEAVE BOUCLE ;
			ELSE
				SET resultat = CONCAT(CONCAT(resultat,'-'),id_cursor);
			END IF ;
		UNTIL fini END REPEAT BOUCLE;
	CLOSE cur1;
	RETURN resultat;
 
END$$
 
DELIMITER ;
Ceci est un début, et j'ai comme résultat une itération de trop.

comment puis-je boucler sur un select sans les curseur, merci de votre aide.