Está en la página 1de 4

/*Ejemplos */

/*Del PDF
Obtengan los clientes que tengan distinta edad de aquellos clientes que tienen un cdigo mayor a
5:*/
use subconsultas;
Select Apellido, Nombre, max(Edad) from CLIENTES
group by Edad
Having Edad= max(Edad)
SELECT ID,Nombre,Apellido,Telefono
FROM CLIENTES
WHERE Edad <> ALL (SELECT Edad FROM CLIENTES WHERE ID >5);
/*En lugar de ALL, puede tambien, ANY, SOME, IN, NOT IN, NOT EXISTS*/
/*******************************************************************************/
/*Ejercicio subconsultas
Listar Cdigo y Nombre de cada Escuela, y obtener
la cantidad de Reservas realizadas con una subconsulta.*/
Select E.id_Escuela,E.nombreEscuela,
(Select count(*) from Reservas R where E.id_Escuela = R.fk_idEscuela) as CantidadReserva
from Escuelas E
/*
NO trae los 0*/
Select E.id_Escuela,E.nombreEscuela, count (R.fk_idEscuela) as CantReserva
from Escuelas E
inner join Reservas R
on E.id_Escuela = R.fk_idEscuela
group by E.id_Escuela,E.nombreEscuela
/*Listar Cdigo y Nombre de cada Escuela, y obtener la cantidad de Reservas realizadas durante el
presente ao, con una subconsuta. En caso de no haber realizado Reservas, mostrar el nmero
cero.*/
use museo;
Select E.id_Escuela,E.nombreEscuela,
(Select count(*) from Reservas R where E.id_Escuela = R.fk_idEscuela
and year(R.fecha) = 2016) as CantidadReserva
from Escuelas E
use museo;
Select E.id_Escuela,E.nombreEscuela,
(Select count(*) from Reservas R
where E.id_Escuela = R.fk_idEscuela
and EXTRACT(YEAR FROM R.fecha) = 2016) as CantidadReserva
from Escuelas E

/*Para cada Tipo de Visita, listar el nombre y obtener con una subconsulta como tabla derivada la
cantidad de Reservas realizadas.*/
/*******/
use museo;
select tp.idTipo_Visita, tp.tipoVisita, count(idVisita)
/*Ejercicio 3- en el telefono*/
from TipoVisita tp
/*Para cada Gua, listar el nombre y obtener con una subconsulta como tabla derivada la cantidad de
Visitas en las que particip como Responsable. En caso de no haber participado en ninguna,
mostrar el nmero cero.*/
/*Funciona--OK*/
use museo;
select T.idGuia, g.guia, count(T.CantVisitas) as CantVisitas
from Guias g
left join
(
select vg.idGuia, count(*) as CantVisitas
from VisitaGuias vg
where vg.responsable ='S'
group by vg.idGuia
)as T
on T.idGuia = g.id_guia
/*Tambien funciona--OK*/
use museo;
select T.idGuia, g.guia, count(*) as CantVisitas
from Guias g
left join
(
select vg.idGuia, count(*) as CantVisitas
from VisitaGuias vg
where vg.responsable ='S'
group by vg.idGuia
)as T
on T.idGuia = g.id_guia
/*Asi deberia haber sido en mysql*/
/*Tambien funciona--OK*/
use museo;
select T.idGuia, g.guia, ifnull(T.CantVisitas)
from Guias g
left join
(
select vg.idGuia, count(*) as CantVisitas
from VisitaGuias vg
where vg.responsable ='S'

group by vg.idGuia
)as T
on T.idGuia = g.id_guia
/*
Consulta hecha por Seba resuelta punto 4
select g.id_guia, g.guia, count(*) as cantVisitas
from Guias g
left join (select vg.idguia, cant=count(*)
where vg.responsable='S'
group by vg.idguia) as T
on g.idguia = vg.idguia
--------------------------------despues que lo borro y lo hizo de nuevo
select g.idguia, g.nombreguia, ifnull(cant,0)
from guias g
left join (select vg.idguia, cant=count(*)
where vg.responsable='S'
group by vg.idguia) as T on g.idguia = vg.idguia
*/
/*Esta seria la subconsulta*/
use museo;
select vg.idGuia, vg.responsable, count(idGuia) as CantVisitas
from VisitaGuias vg
group by vg.idGuia
/*5) Para cada Escuela, mostrar el nombre y la cantidad de Reservas realizadas el ltimo ao que
visitaron el Museo. Resolver con subconsulta correlacionada.
*/
/*otra vez*/
select E.escuelas, count(R.idreservas) as CantReservas
from Escuelas E
inner join Reservas R
on E.idEscuela = R.idEscuela
where year(R.fecha)= (select max(R.fecha)
from Reservas R
where R.idEscuela = E.idEscuela
group by E.escuelas)
/*6) Listar el nombre de las Escuelas que realizaron Reservas. Resolver con Exists.*/
select E.escuelas, R.idEscuela
from Escuelas E
where exists(
select R.idEscuela from
Reservas R
where E.idEscuela = R.idEscuela)
group by E.escuelas

-- 7) Listar el nombre de las Escuelas que realizaron Reservas. Resolver con IN.
select E.escuelas, R.idEscuela
FROM Escuelas E
where E.idEscuela in (select R.idEscuela
from Reservas R
where E.idEscuela = R.idEscuela)
group by E.escuelas

También podría gustarte