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

Preguntas similare

Leer las respuestas

#11 Carlos M. Calvelo
27/10/2009 - 23:29 | Informe spam
Hola Nelson,

Aquí te dejo otra version que reconoce ciclos. Solo he añadido
el charindex(...) en el where de la segunda consulta.
Esa condición se encarga de parar la noria si nos encontramos con
un punto que ya está en la Ruta.

;
with Viajes as
(
select
cast(A+'-'+B as varchar(max)) Ruta,
B PuntoFinal,
2 #Puntos
from @Conexiones
where A = @origen
union all
select
cast(V.ruta+'-'+C.B as varchar(max)) Ruta,
C.B PuntoFinal,
#Puntos+1 #Puntos
from Viajes V join @Conexiones C on V.PuntoFinal = C.A
where C.A <> @destino and charindex('-'+C.B+'-','-'+Ruta+'-')=0
)
select Ruta, #Puntos
from Viajes
where PuntoFinal = @destino

Saludos,
Carlos
Respuesta Responder a este mensaje
#12 Nelson
28/10/2009 - 15:02 | Informe spam
Ya entiendo, aunque no te niego que me ha costado mucho esfuerzo entender la
lógica de los CTE's recursivos, pero ahí le vamos :)
Nuevamente muchas gracias por la ayuda, Carlos, este tema me ha servido para
aprender, de hecho hasta replantearme soluciones de otros problemas
similares con que uno se topa diariamente.
Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida