Que tal.
Lo primero que deberias hacer es realizar la consulta
select distinct d.destino from deal_destinos dd
inner join destinos d on d.iddestino=dd.iddestino
where dd.iddeal=id
Para ver si no te esta trayendo resultados repetidos, en ocasiones un espacio te puede dar
resultados repetidos.
Segun veo la funcíón, lo que estas intentando hacer es generar una cadena
con los destinos que se obtengan de la consulta,
Para que utilizas los IF, creo que simplemente barriendo el Cursos y generando
user = users + VRETURN + ' (' + xx + ') ' + ' - '
Y al final del cursos realizar un TRIM o Substring para quitar los ultimos 3 caracteres
Saludos.
JB
--- On Tue, 10/6/09, COMPINA Gabriel <gabriel@stripped> wrote:
From: COMPINA Gabriel <gabriel@stripped>
Subject: necesito ayuda
To: mysql-es@stripped
Date: Tuesday, October 6, 2009, 6:05 PM
hola man tengo una funcion cuyo codigo es el siguiente
delimiter ||
drop FUNCTION if exists fn_purchased;
CREATE FUNCTION fn_purchased(id int) RETURNS varchar(300)
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE VRETURN varchar(30) ;
DECLARE us varchar(30);
DECLARE users varchar(300) default '';
declare xx int default 0;
DECLARE UAM CURSOR FOR select distinct d.destino from deal_destinos dd
inner join destinos d on d.iddestino=dd.iddestino
where dd.iddeal=id ;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN UAM;
REPEAT
FETCH UAM INTO us;
set xx=xx+1;
set VRETURN=us;
if(users='') then set users=concat(VRETURN,' (',xx,') ');
else
if(substring(users,1,VRETURN) )!=VRETURN then
set users=concat(users,' - ',VRETURN,' (',xx,') ');
end if;
end if;
UNTIL done END REPEAT;
CLOSE UAM;
RETURN users;
END ;
||
delimiter ;
bueno puede ser k a simple vista este bien pero no ya k hay datos k se
repiten y esa no es la idea
aca dejo el resultado de dicho codigo esperando k me puedas ayudar desde
gracias y mi correo es sdarknot@stripped
+-------------------------------------------------------------------------------------------+
| fn_purchased(1)
|
+-------------------------------------------------------------------------------------------+
| ORLANDO 4/3 (1) - LAS VEGAS 3/2 (2) - DAYTONA BEACH 3/2
(3) - DAYTONA BEACH 3/2 (4) |
+-------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)