Sei sulla pagina 1di 4

Se tiene el siguiente esquema de base de datos para el manejo de informacin de un Sistema de Transportes intermunicipales:

TERMINALES_TRANSPORTE (cod_terminal, nombre, ciudad, estado) VIAJES(nmero, transportadora, das) TARIFAS(num_viaje, cod_tarifa, monto, restricciones) TRAYECTO_VIAJE(num_viaje, num_trayecto, cod_terminal_sale, hora_salida_programada, cod_terminal_llega, hora_llegada_programada) VIAJES_REALIZADOS(num_viaje, num_trayecto, fecha, num_asientos_disponibles, id_transporte, cod_terminal_sale, hora_salida, cod_terminal_llega, hora_llegada) VIAJES_AUTORIZADOS(tipo_transporte, cod_terminal) TRANSPORTE(id_transporte, total_de_asientos, tipo_transporte) RESERVA_ASIENTOS(num_viaje, num_trayecto, fecha, num_asiento, nombre_cliente, tel_cliente) El anterior esquema describe una base de datos con informacin sobre viajes de lneas areas. Cada VIAJE se identifica con un nmero de viaje, y consta de uno o ms TRAYECTO_VIAJE con num_trayecto 1, 2, 3, etc. Cada trayecto tiene horas y terminales de salida y de llegada programados, y tiene muchos TRAYECTO_VIAJE, uno por cada fecha en que tiene lugar el viaje. Se mantienen TARIFAS para cada viaje. Para cada movimiento de trayecto, se mantiene RESERVA_ASIENTOS, el transporte empleado en el trayecto y las horas de salida y llegada y los terminales especficos. Un TRANSPORTE se identifica con id_transporte y es de un cierto tipo_transporte. VIAJES AUTORIZADOS relaciona los tipo_transporte con los terminales en los que puede aterrizar. Cada TERMINAL se identifica con un cod_terminal. Especifique las siguientes consultas:

1. Prepare una lista con los nmeros de viaje y los das de todos los viajes o trayectos de viaje que salen del terminal codigo CA001 y llegan al terminal cdigo BO001. Solucin 1: SELECT num_viaje, num_trayecto,fecha FROM viajes_realizados WHERE cod_terminal_sale = 'CA001' AND cod_terminal_llega = 'BO001'; Solucin 2: SELECT distinct numero, dias FROM viajes_realizados, viajes WHERE cod_terminal_sale = 'CA001' AND cod_terminal_llega = 'BO001' AND numero = num_viaje 2. Obtenga una lista con los nmeros de viaje, cdigos de terminal de salida, horas de salida programadas, cdigos de terminal de llegada, horas de llegada programadas y das de todos los viajes o trayectos de viajes que salgan de algn terminal de la ciudad de Santa Marta y lleguen a algn terminal de la ciudad de Buenaventura. Solucin 1: SELECT tv.*, dias FROM trayecto_viaje tv, terminales_transporte tt, viajes WHERE (ciudad = 'Santa Marta' AND cod_terminal_sale = tt.cod_terminal) AND (ciudad = 'Buenaventura' AND cod_terminal_llega = tt.cod_terminal) AND (numero = num_viaje); Solucin 2: SELECT tv.*, dias FROM trayecto_viaje tv, viajes WHERE cod_terminal_sale = (SELECT cod_terminal FROM terminales_transporte WHERE ciudad = 'Santa Marta') AND cod_terminal_llega = (SELECT cod_terminal FROM terminales_transporte WHERE ciudad = 'Buenaventura') AND numero = num_viaje;

3. Liste las diferentes tarifas que se aplicaron a los viajes que se realizaron entre los terminales de Santa Marta y Medelln, en el ao 1999. Solucin 1: SELECT distinct cod_tarifa, monto FROM viajes_realizados vr, tarifas ta, terminales_transporte WHERE (ciudad = 'Santa Marta' AND cod_terminal_sale = cod_terminal) AND (ciudad = 'Medelln' AND cod_terminal_llega = cod_terminal) AND fecha between '01/01/00' and '31/12/99' AND ta.num_viaje = vr.num_viaje; Solucin 2: SELECT distinct cod_tarifa, monto FROM viajes_realizados vr, tarifas ta, terminales_transporte WHERE cod_terminal_sale = (SELECT cod_terminal FROM terminales_transporte WHERE ciudad = 'Santa Marta') AND cod_terminal_llega = (SELECT cod_terminal FROM terminales_transporte WHERE ciudad = 'Medelln') AND fecha between '01/01/00' and '31/12/99' AND ta.num_viaje = vr.num_viaje;

4. Liste los terminales que tienen el mayor trfico en un da (haga el ejemplo con cualquier fecha). CREATE TABLE tmp (term varchar2(5), total number(10)); INSERT INTO tmp (term, total) SELECT cod_terminal, count(*) FROM terminales_transporte, viajes_realizados WHERE fecha = '21/10/00' AND cod_terminal_sale = cod_terminal OR cod_terminal_llega = cod_terminal GROUP BY cod_terminal; SELECT term, MAX(total) FROM tmp GROUP BY term; 5. Muestre los viajes con los correspondientes transportes, que tuvieron ms de 50 pasajero con reservas. SELECT num_viaje, id_transporte FROM viajes_realizados WHERE num_viaje IN (SELECT num_viaje FROM reserva_asientos GROUP BY num_viaje HAVING count(*) > 50);

Potrebbero piacerti anche