martes, 18 de abril de 2017

EJERCICIOS RESUELTOS DE BASE DE DATOS II consultas union

Ej 2.
-
Una oficina gubernamental desea construir un complejo habitacional, para lo cual elaboro la
siguiente Base de Datos:

TRAMO (c_ciudadA, c_ciudadB, Distancia)
CIUDADES (c_ciudad, nombre, cant_escuelas, cant_fabricas)

Para decidir donde instalarlo, desea conocer los siguientes datos:

a) Las ciudades alcanzables desde la ciudad con mayor cantidad de fabricas, recorriendo no más
de dos tramos, c/u de los cuales no puede tener mas de 10km de longitud.
SELECT CB.Nombre
FROM CIUDADES CA, TRAMO T, CIUDADES CB
WHERE CA.Cant_Fabricas = (SELECT MAX(Cant_Fabricas)
FROM CIUDADES
)
AND T.Distancia <= 10
AND T.C_CiudadA = CA.C_Ciudad
AND CB.C_Ciudad = T.C_CiudadB
AND CB.C_Ciudad <> CA.C_Ciudad

UNION

SELECT CB.Nombre
FROM CIUDADES CA, TRAMO T1, TRAMO T2, CIUDADES CB
WHERE CA.Cant_Fabricas = (SELECT MAX(Cant_Fabricas)
FROM CIUDADES
)
AND T1.Distancia <= 10
AND T2.Distancia <= 10
AND T1.C_CiudadA = CA.C_Ciudad
AND T1.C_CiudadB = T2.C_CiudadA
AND CB.C_Ciudad = T2.C_CiudadB
AND CB.C_Ciudad <> CA.C_Ciudad;

b) Las ciudades con mas de 10 fabricas que estén conectadas con todas las demás en forma
directa, siempre que ningún tramo supere los 50km.

SELECT DISTINCT C_Ciudad, C.Nombre
FROM CIUDADES AS C, TRAMO AS T
WHERE C.Cant_Fabricas > 10 AND
C.C_Ciudad = T.C_CiudadA AND
T.Distancia < 50
GROUP BY C.C_CIUDAD,
C.Nombre
HAVING COUNT(C.C_Ciudad) = (SELECT COUNT (C1.C_CIUDAD)-FROM CIUDADES C1);

c) Los pares de ciudades, de la forma (ciudad1, ciudad2), que son alcanzables a través de, a lo
sumo, otra ciudad, llámese a esta, ciudad3 (esto es, encontrar los caminos ciudad1-ciudad3-ciudad2).

SELECT CA.Nombre, CB.Nombre
FROM CIUDADES AS CA, TRAMO AS T1, TRAMO AS T2, CIUDADES AS CB
WHERE T1.C_CiudadA = CA.C_Ciudad
AND T1.C_CiudadB = T2.C_CiudadA
AND CB.C_Ciudad = T2.C_CiudadB
AND CB.C_Ciudad <> CA.C_Ciudad;



No hay comentarios:

Publicar un comentario

ENTRADAS POPULARES