Oracle - AYUDA con ejercicio de transporte

 
Vista:
sin imagen de perfil

AYUDA con ejercicio de transporte

Publicado por juan carlos (2 intervenciones) el 22/09/2016 06:31:23
1. Se tienen ciudades y diferentes empresas de transporte que las conectan así:
1
2
3
4
CREATE TABLE conexion( cod_ciudad1 NUMBER(8), cod_ciudad2 NUMBER(8),
empresa_transporte VARCHAR2(10),
valor_pasaje NUMBER(8) NOT NULL CHECK(valor_pasaje > 0), PRIMARY KEY(cod_ciudad1, cod_ciudad2, empresa_transporte)
);


1
INSERT INTO conexion VALUES(1, 2, 'Azul', 10);


Esto significa que el pasaje entre la ciudad 1 y la ciudad 2 vale $10 en la empresa Azul. Veamos más datos:
1
2
INSERT INTO conexion VALUES(1, 2, 'Gacela', 11); INSERT INTO conexion VALUES(1, 3, 'Ondas', 14); INSERT INTO conexion VALUES(2, 3, 'Azul', 5); INSERT INTO conexion VALUES(1, 3, 'Azul', 13);
INSERT INTO conexion VALUES(3, 2, 'Gacela', 6); INSERT INTO conexion VALUES(3, 4, 'Ondas', 5); INSERT INTO conexion VALUES(3, 4, 'Azul', 5); INSERT INTO conexion VALUES(4, 3, 'Azul', 5);
Etc.


Gráficamente:


Note, por ejemplo, que para un usuario ir de la ciudad 1 a la ciudad 3 dispone de dos rutas:

Ruta directa:
1 ­> 3 costo = 13 ó 14 (dependiendo de la empresa que elija). Ruta haciendo escalas:
1 ­> 2 ­> 3 costo = 15 ó 16 (dependiendo de la empresa que elija en el tramo 1 ­> 2).


A. (40%) Dada una ciudad (origen) y una ciudad (destino), haga un procedimiento en PL/SQL que imprima todas las rutas posibles para ir de una ciudad a otra y el costo de cada ruta (en cada ruta no se puede repetir escala). Se debe indicar la empresa de transporte de cada tramo de la ruta. La impresión debe estar ordenada desde la ruta más económica hasta la más costosa.


Ejemplo: Si se ingresan las ciudades 1 (origen) y 3 (destino) en el ejemplo anterior, el programa debe imprimir:
1(Azul)3, costo = 13 1(Ondas)3, costo = 14 1(Azul)2(Azul)3, costo = 15 1(Gacela)2(Azul)3, costo = 16


Si no es posible viajar entre un par de ciudades, el programa deberá informarlo. Por ejemplo, si se ingresan las ciudades 3 (origen) y 1 (destino) en el ejemplo anterior.


Nota: Los datos anteriores son sólo un ejemplo. Su procedimiento debe funcionar para cualquier cantidad de filas que tenga la tabla: Puede haber muchas ciudades, muchas empresas de transporte, muchas conexiones.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder