You are on page 1of 11

TECNOLOGICO NACIONAL DE MEXICO

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

Recursos educativos Valor Fecha Elaboracin Lugar Software


10% My SQL o Maria DB
Proyector Duracin Laboratorio de computo Hardware
Apuntes de clases
29/09/2017 o aula de clases
50 minutos PC o Laptop por alumno

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

Pgina 1 Practica UNO


SELECT MAX(codigo) FROM ciudades;

Vamos a imaginar que pudiramos hacerlo en dos pasos. Si llamamos "maxCodigo" a ese cdigo obtenido, la "segunda"
consulta podra ser:

SELECT * FROM personas WHERE codciudad= maxCodigo;

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

SELECT * FROM personas WHERE codciudad= ( SELECT MAX(codigo) FROM ciudades );

4. Procedimiento

DESARROLLO DE LA PRCTICA:

Paso 1: Acceder a Mysql como en la prctica nmero dos.

Paso 2: Ponga en uso la base de datos: Empresa

Paso 3: Escriba las instrucciones sql de lo siguiente:

a) Si quisiramos saber quines son los clientes que estn por encima del promedio del limitedecredito

select * from clientes where limitecredito > al promedio de limite de credito

pero no conocemos cual es el promedio del lmite de crdito entonces lo calculamos

mysql> select avg(limitecredito) from clientes;

instruccin final:

select * from clientes where limitecredito > (select avg(limitecredito) from clientes);

b) Que realiza la siguiente instruccin? Explique.

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 clie from pedidos group by clie having count(*)= 2;

Ahora si podemos encontrar los nombres realizando

mysql> select nombre from clientes where numclie in (select clie from pedidos group by
clie having count(*)= 2);

Pgina 2 Practica UNO


Cules son los nombres?

d) Que hace la siguiente la ultima instruccion?

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.

Primero debemos saber cul es el cdigo de la oficina Jaltipan norte, hacemos:


mysql> select numoficina from oficinas where ciudad="jaltipan" and region="norte";
cul es?

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")));

ACTIVIDAD: (escribe la instruccin SQL y el resultado)

1) Nombre de los clientes que estn por debajo del promedio del lmite de crdito

2) Nombre del representante de ventas que menos cliente tenga

3) Nombre del cliente que mas pedido ha realizado

4) Nombre de los clientes que no han realizado ningn pedido

5) Nombre de los clientes que han realizado pedidos durante el ao 2001 (con
subconsultas)

6) Muestre el cdigo, Nombre de los proveedores con su respectivo nombre de producto


que provee

Pgina 3 Practica UNO


5.Captura de pantallas.
(En este apartado coloque sus captura de pantallas).

Pgina 4 Practica UNO


C

Pgina 5 Practica UNO


D
Muestra el id y cuantos pedidos a realizado cada cliente y los ordena de manera descendente

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

Pgina 6 Practica UNO


Esta instruccin realiza lo mismo que la anterior pero ahora solo muestra el nombre del cliente

Pgina 7 Practica UNO


Actividad
1

Pgina 8 Practica UNO


3

Pgina 9 Practica UNO


5

Pgina 10 Practica UNO


6. Conclusiones

En esta prctica aprendimos que muchas ocasiones las consultas


multitablas de composicin natural no son suficientes para realizar algn
tipo de consulta, por lo que se tienen que realizar varias subconsultas.

Docente Evaluador Calificacin Observaciones

MTI JOSE HERNANDEZ RODRIGUEZ

Pgina 11 Practica UNO

You might also like