Está en la página 1de 2

LABORATORIO N� 05

TABLAS MULTIPLES
Los organizadores de un festival de teatro mantienen la informaci�n del mismo en
una base de datos con el siguiente esquema:
INVITADO (NroInvit, Nombre, Categor�a, Origen)
Contiene informaci�n de las personas invitadas al festival. A cada persona se le
asigna un nro de invitado que lo identifica y se conoce su nombre, su categor�a
(ej: prensa, cr�tica, etc.) y su pa�s de origen.
TEATRO (CodTeat, Nombre, Direcci�n, CantAsientos)
Contiene informaci�n de los teatros que participan del festival. De cada teatro se
conoce la cantidad de asientos disponibles, los cuales condicionan la cantidad de
reservas que se pueden realizar para el mismo.
OBRA (CodObra, NombreObra, Autor)
Contiene informaci�n de las obras exhibidas en el festival.
EXHIBICION (CodExhib, CodTeat, Fecha, CodObra)
Contiene informaci�n del calendario de obras a exhibirse durante el festival.
RESERVA (CodTeat, Fecha, NroAsiento, NroInvit)

Mediante sentencias SQL, dar soluci�n a los siguientes requerimientos


a) Obtener los nombres de los invitados que tienen reserva en el teatro de
nombre Segura.
SELECT INVITADO.Nom_Inv FROM TEATRO,RESERVA,INVITADO
where TEATRO.Cod_Teatro=RESERVA.Cod_Teatro and
RESERVA.Nro_Inv=INVITADO.Nro_Inv and TEATRO.Nom_Teatro='SEGURA'
b) Obtener los nombres de los invitados y la cantidad de reservas por invitado
en el a�o 2015
SELECT INVITADO.Nom_Inv,COUNT(RESERVA.Nro_Inv)AS CANTIDADRESERVAS FROM RESERVA,
INVITADO
WHERE RESERVA.Nro_Inv=INVITADO.Nro_Inv
AND YEAR(Fecha_Reserva)='2015'
GROUP BY INVITADO.Nom_Inv

c) Obtener el c�digo y nombre del teatro donde hayan hecho reserva los invitados
de la categor�a autoridades.
SELECT TEATRO.Cod_Teatro, TEATRO.Nom_Teatro
FROM INVITADO, RESERVA, TEATRO
WHERE INVITADO.Nro_Inv=RESERVA.Nro_Inv
AND RESERVA.Cod_Teatro=TEATRO.Cod_Teatro
AND INVITADO.Categoria_Inv='AUTORIDAD'

d) Obtener los nombres y autores de las obras que asisti� el invitado Juan
P�rez.
SELECT OBRA.Nom_Obra, OBRA.Autor_Obra FROM
INVITADO, RESERVA, EXHIBICION, OBRA
WHERE INVITADO.Nro_Inv=RESERVA.Nro_Inv
AND RESERVA.Cod_Teatro=EXHIBICION.Cod_Teatro
AND EXHIBICION.Cod_Obra=OBRA.Cod_Obra
AND INVITADO.Nom_Inv='JUAN PEREZ'
e) Obtener el nombre del teatro y la cantidad de exhibiciones por teatro de
aquellos teatros que tengan m�s de 2 exhibiciones.
select TEATRO.Nom_Teatro , count (exhibicion.Cod_Exi)as cantidad from
teatro,exhibicion
where teatro.Cod_Teatro=exhibicion.Cod_Teatro group by teatro.Nom_Teatro having
COUNT(*)>2

f) Obtener el nombre de la obra y la cantidad de exhibiciones por obra de


aquellas obras exhibidas en el teatro de nombre Municipal.
select obra.Nom_Obra , count(exhibicion.Cod_Exi)as cantidad from
obra,exhibicion,teatro
where obra.Cod_Obra=exhibicion.Cod_Obra AND EXHIBICION.Cod_Teatro=teatro.Cod_Teatro
and teatro.Nom_Teatro='MUNICIPAL' group by obra.Nom_Obra

g) Obtener los nombres de los teatros en los cuales hayan hecho exhibido dos
obras.
select teatro.Nom_Teatro from teatro,exhibicion
where teatro.Cod_Teatro=exhibicion.Cod_Teatro
group by teatro.Nom_Teatro HAVING COUNT(*) >2

h) Actualizar la cantidad de asientos en 20% adicional de los teatros que tengan


m�s de 3 exhibiciones en el a�o 2015.
update teatro
set cantidad_asientos = cantidad_asientos*1.2
from teatro,exhibicion
where exhibicion.cod_teatro= teatro.cod_teatro and year
(exhibicion.fecha_exi)='2015'

También podría gustarte