Se puede hacer con un select ?

27/10/2009 - 05:20 por Nelson | Informe spam
Quitando los detalles tengo una tabla con algo como esto:

Rutas
-
parada1, parada2

A B
A C
B D
D E

Si me piden sacar la "ruta" desde A hasta E, debe sacarme un varchar con
'A-B-D-E'.

Se que lo puedo hacer con un cursor recorriendo los registros pero me han
dicho que no se aconseja.

Hay manera de hacerlo con un select ? alguna orientacion que me puedan dar
pues no lo entiendo

Grax

ss2008
 

Leer las respuestas

#1 Carlos Sacristan
27/10/2009 - 11:09 | Informe spam
Con los datos que has enviado la ruta no tiene por qué ser esa. Fíjate que
en "parada1" aparece dos veces "A", así que la ruta podría ser A-C o A-B-D-E

Suponiendo que el registro A-C es erróneo, una solución podría ser:

***************************************************************************************

declare @inicio char(1)
set @inicio = 'A'
;WITH viaje(desde, hasta, numParada) AS
(
SELECT Desde, hasta, 2 AS numParada
FROM rutas
WHERE desde = @inicio
UNION ALL
SELECT r.desde, r.hasta, numParada + 1
FROM rutas r
INNER JOIN viaje v
ON v.hasta = r.desde
)
SELECT @inicio AS parada, 1 AS numParada
UNION
SELECT hasta, numParada
FROM viaje;

***************************************************************************************

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Nelson" wrote in message
news:%
Quitando los detalles tengo una tabla con algo como esto:

Rutas
-
parada1, parada2

A B
A C
B D
D E

Si me piden sacar la "ruta" desde A hasta E, debe sacarme un varchar con
'A-B-D-E'.

Se que lo puedo hacer con un cursor recorriendo los registros pero me han
dicho que no se aconseja.

Hay manera de hacerlo con un select ? alguna orientacion que me puedan
dar pues no lo entiendo

Grax

ss2008

Preguntas similares