Query Recursivo

12/10/2008 - 06:39 por renemoreno | Informe spam
Hola a todos, a ver si alguien me puede ayudar con esto que ya me
tiene mareado.

Tengo dos campos con numero de codigo [DOCTO] y [DOCTOCOMP], un codigo
en DOCTO tiene un DOCTOCOMP, este codigo de DOCTOCOMP taambien existe
en el campo DOCTO y tambien tiene un DOCTOCOMP, esto se repite hasta
que DOCTO y DOCTOCOMP son iguales, ahi termina la secuencia. Por
ejemplo:

DOCTO - DOCTOCOMP
11111 - 22222
22222 - 33333
33333 - 44444
44444 - 44444

Estoy tratando de obtener el DOCTO incial y el DOCTOCOMP final, para
el ejemplo anterior seria 11111 - 44444.

Espero haber sido claro y de antemano agradezco cualquier ayuda que me
puedan dar.

Saludos
Rene Moreno
 

Leer las respuestas

#1 Leonardo Azpurua
12/10/2008 - 07:21 | Informe spam
"renemoreno" escribió en el mensaje
news:
Hola a todos, a ver si alguien me puede ayudar con esto que ya me
tiene mareado.

Tengo dos campos con numero de codigo [DOCTO] y [DOCTOCOMP], un codigo
en DOCTO tiene un DOCTOCOMP, este codigo de DOCTOCOMP taambien existe
en el campo DOCTO y tambien tiene un DOCTOCOMP, esto se repite hasta
que DOCTO y DOCTOCOMP son iguales, ahi termina la secuencia. Por
ejemplo:

DOCTO - DOCTOCOMP
11111 - 22222
22222 - 33333
33333 - 44444
44444 - 44444

Estoy tratando de obtener el DOCTO incial y el DOCTOCOMP final, para
el ejemplo anterior seria 11111 - 44444.

Espero haber sido claro y de antemano agradezco cualquier ayuda que me
puedan dar.

Saludos
Rene Moreno



Hola, Rene:

Seguramente habrá una manera mejor de hacerlo, pero esto funciona:

CREATE FUNCTION findDoctocomp(@p AS INT) RETURNS INT
AS
BEGIN
DECLARE @f AS INT
SET @f = (SELECT d2 FROM Test WHERE d1 = @p)
IF @f IS NULL RETURN @f
If @f = @p RETURN @f
RETURN dbo.findDoctocomp(@f)
END

Los nombres de las columnas están cambiados para no escribir tanto :)


Salud!

Preguntas similares