Professional Documents
Culture Documents
ITS Acayucan
Ingeniera en Sistemas Computacionales
Taller de Base de Datos SCA 1025 PERIODO: Agosto 2017 Enero 2018
nme
ro
NOMBRE DE LA PRACTICA: SUBCONSULTAS
UNIDAD: Dos TEMA: 2.5 Subconsultas 08
ALUMNO: Eunice Portugal Badillo GRUPO: 503-B
1. Introduccin
Muchas ocasiones las consultas multitablas de composicin natural no son suficientes para realizar algn tipo de consulta,
como por ejemplo saber cul es el nombre del producto ms vendido, por lo tanto nos vemos forzados a realizar una
consulta previa y posteriormente realizar la otra, pero en una solo instruccin.
2. Objetivo
El alumno realiza subconsultas en 1 o ms tablas, sin la necesidad de un Sistema de Informacin, logrando as un informe
entendible para un usuario final.
3. Fundamento
Qu es una subconsulta?
A veces tenemos que realizar operaciones ms complejas con los datos, operaciones en las que nos interesara ayudarnos de
una primera consulta auxiliar que extrajera la informacin en la que nos queremos basar. Esta consulta auxiliar recibe el
nombre de "subconsulta" o "subquery".
Por ejemplo, si queremos saber qu clientes tenemos en la ciudad que ms habitantes tenga, la forma "razonable" de
conseguirlo sera saber en primer lugar cual es la ciudad que ms habitantes tenga, y entonces lanzar una segunda consulta
para ver qu clientes hay en esa ciudad.
Como la estructura de nuestra base de datos de ejemplo es muy sencilla, no podemos hacer grandes cosas, pero un caso
parecido al anterior (aunque claramente ms intil) podra ser saber qu personas tenemos almacenadas que vivan en la
ltima ciudad de nuestra lista.
Para ello, la primera consulta (la "subconsulta") sera saber cual es la ltima ciudad de nuestra lista. Si lo hacemos tomando la
que tenga el ltimo cdigo, la consulta podra ser
Vamos a imaginar que pudiramos hacerlo en dos pasos. Si llamamos "maxCodigo" a ese cdigo obtenido, la "segunda"
consulta podra ser:
Pero estos dos pasos se pueden dar en uno: al final de la "segunda" consulta (la "grande") incluimos la primera consulta (la
"subconsulta"), entre parntesis, as
4. Procedimiento
DESARROLLO DE LA PRCTICA:
a) Si quisiramos saber quines son los clientes que estn por encima del promedio del limitedecredito
instruccin final:
select * from clientes where limitecredito > (select avg(limitecredito) from clientes);
mysql> select nombre from clientes where numclie in (select clie from pedidos);
Muestra los nombres de los clientes que hicieron pedidos
c) Si quisiramos saber los nombres de los clientes que han realizado solamente 2 pedidos, entonces realizaremos
primero
mysql> select clie, count(*) from pedidos group by clie having count(*)= 2;
pero no podemos devolver 2 campos a la otra consulta y nos interesa solo las claves de los clientes que ha realizado
dos pedidos, entonces omitimos count(*) en la lista de campos asi:
mysql> select nombre from clientes where numclie in (select clie from pedidos group by
clie having count(*)= 2);
mysql> select clie, count(*) from pedidos group by clie order by count(*) desc;
mysql> select clie, count(*) from pedidos group by clie order by count(*) desc limit 1;
mysql> select clie from pedidos group by clie order by count(*) desc limit 1;
mysql> select nombre from clientes where numclie = (select clie from pedidos group by clie
order by count(*) desc limit 1);
e) Si quisiera saber el nombre de los clientes que hayan sido atendido por uno de los representante de ventas de la
oficina Jaltipan Norte.
Segundo busquemos las claves de los empleados que trabajan en esa oficina (la de la anterior instruccin) cules
son?
mysql> select numempl from repventas where oficinarep in (select numoficina from
oficinas where ciudad="jaltipan" and region="norte");
Tercero busquemos las claves de los clientes que condicionando que el representante de ventas que lo atendi este
en la lista de esa oficina (la de la anterior instruccin) cules son?
mysql> select clie from pedidos where rep_atendio in (select numempl from
repventas where oficinarep in (select numoficina from oficinas where
ciudad="jaltipan" and region="norte"));
Finalmente obtenemos los nombre de los clientes de las claves que arroj la anterior instruccin? Cmo se llaman
entonces?
mysql> select nombre from clientes where numclie in (select clie from pedidos
where rep_atendio in (select numempl from repventas where oficinarep in (select
numoficina from oficinas where ciudad="jaltipan" and region="norte")));
1) Nombre de los clientes que estn por debajo del promedio del lmite de crdito
5) Nombre de los clientes que han realizado pedidos durante el ao 2001 (con
subconsultas)
Muestra el id del cliente y cuantos pedidos a realizado, los ordena de manera descendente y me
muestra solo el primero
Muestra id de clientes que han realizado pedidos, los ordena de manera de manera descendente y
muestra el primero