Transcripcion de codigo...

24/01/2006 - 00:26 por Sans | Informe spam
Encontre el siguiente codigo de internet, que se asemeja a un problema
que estoy abordando, el detalle es que me quedo grande la transcripcion
al codigo actual de sql, al parecer es el estardar SQL-1999...
Si alguien sabe como transcribirlo le agradecere cualquier aportacion
al respecto...

Saludos

CREATE TABLE T_JOURNEY
(JNY_FROM_TOWN VARCHAR(32),
JNY_TO_TOWN VARCHAR(32),
JNY_MILES INTEGER)
INSERT INTO T_JOURNEY VALUES ('PARIS', 'NANTES', 385)
INSERT INTO T_JOURNEY VALUES ('PARIS', 'CLERMONT-FERRAND', 420)
INSERT INTO T_JOURNEY VALUES ('PARIS', 'LYON', 470)
INSERT INTO T_JOURNEY VALUES ('CLERMONT-FERRAND', 'MONTPELLIER', 335)
INSERT INTO T_JOURNEY VALUES ('CLERMONT-FERRAND', 'TOULOUSE', 375)
INSERT INTO T_JOURNEY VALUES ('LYON', 'MONTPELLIER', 305)
INSERT INTO T_JOURNEY VALUES ('LYON', 'MARSEILLE', 320)
INSERT INTO T_JOURNEY VALUES ('MONTPELLIER', 'TOULOUSE', 240)
INSERT INTO T_JOURNEY VALUES ('MARSEILLE', 'NICE', 205)


WITH journey (TO_TOWN, STEPS, DISTANCE, WAY)
AS (SELECT DISTINCT JNY_FROM_TOWN, 0, 0, CAST('PARIS' AS VARCHAR(MAX))

FROM T_JOURNEY
WHERE JNY_FROM_TOWN = 'PARIS'
UNION ALL
SELECT JNY_TO_TOWN, departure.STEPS + 1,
departure.DISTANCE + arrival.JNY_MILES,
departure.WAY + ', ' + arrival.JNY_TO_TOWN
FROM T_JOURNEY AS arrival
INNER JOIN journey AS departure
ON departure.TO_TOWN = arrival.JNY_FROM_TOWN)
SELECT * FROM journey WHERE TO_TOWN = 'TOULOUSE'

TO_TOWN STEPS DISTANCE WAY
-
TOULOUSE 3 1015 PARIS, LYON, MONTPELLIER,
TOULOUSE
TOULOUSE 2 795 PARIS, CLERMONT-FERRAND,
TOULOUSE
TOULOUSE 3 995 PARIS, CLERMONT-FERRAND,
MONTPELLIER,
 

Leer las respuestas

#1 Sans
24/01/2006 - 00:49 | Informe spam
Fe de erratas, el codigo abajo escrito es de sql 2005...como quiera,
cualquier aportacion en la transcripcion sera bien recibida...

Saludos

Sans ha escrito:

Encontre el siguiente codigo de internet, que se asemeja a un problema
que estoy abordando, el detalle es que me quedo grande la transcripcion
al codigo actual de sql, al parecer es el estardar SQL-1999...
Si alguien sabe como transcribirlo le agradecere cualquier aportacion
al respecto...

Saludos

CREATE TABLE T_JOURNEY
(JNY_FROM_TOWN VARCHAR(32),
JNY_TO_TOWN VARCHAR(32),
JNY_MILES INTEGER)
INSERT INTO T_JOURNEY VALUES ('PARIS', 'NANTES', 385)
INSERT INTO T_JOURNEY VALUES ('PARIS', 'CLERMONT-FERRAND', 420)
INSERT INTO T_JOURNEY VALUES ('PARIS', 'LYON', 470)
INSERT INTO T_JOURNEY VALUES ('CLERMONT-FERRAND', 'MONTPELLIER', 335)
INSERT INTO T_JOURNEY VALUES ('CLERMONT-FERRAND', 'TOULOUSE', 375)
INSERT INTO T_JOURNEY VALUES ('LYON', 'MONTPELLIER', 305)
INSERT INTO T_JOURNEY VALUES ('LYON', 'MARSEILLE', 320)
INSERT INTO T_JOURNEY VALUES ('MONTPELLIER', 'TOULOUSE', 240)
INSERT INTO T_JOURNEY VALUES ('MARSEILLE', 'NICE', 205)


WITH journey (TO_TOWN, STEPS, DISTANCE, WAY)
AS (SELECT DISTINCT JNY_FROM_TOWN, 0, 0, CAST('PARIS' AS VARCHAR(MAX))

FROM T_JOURNEY
WHERE JNY_FROM_TOWN = 'PARIS'
UNION ALL
SELECT JNY_TO_TOWN, departure.STEPS + 1,
departure.DISTANCE + arrival.JNY_MILES,
departure.WAY + ', ' + arrival.JNY_TO_TOWN
FROM T_JOURNEY AS arrival
INNER JOIN journey AS departure
ON departure.TO_TOWN = arrival.JNY_FROM_TOWN)
SELECT * FROM journey WHERE TO_TOWN = 'TOULOUSE'

TO_TOWN STEPS DISTANCE WAY
-
TOULOUSE 3 1015 PARIS, LYON, MONTPELLIER,
TOULOUSE
TOULOUSE 2 795 PARIS, CLERMONT-FERRAND,
TOULOUSE
TOULOUSE 3 995 PARIS, CLERMONT-FERRAND,
MONTPELLIER,

Preguntas similares