SubConsultas- MYSQL

/*Ejemplos */ /*Del PDF Obtengan los clientes que tengan distinta edad de aquellos clientes que tienen un código mayor a

Views 167 Downloads 0 File size 28KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

/*Ejemplos */ /*Del PDF Obtengan los clientes que tengan distinta edad de aquellos clientes que tienen un código 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 Código 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 Código y Nombre de cada Escuela, y obtener la cantidad de Reservas realizadas durante el presente año, con una subconsuta. En caso de no haber realizado Reservas, mostrar el número 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 Guía, 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 número 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 año 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