martes, 18 de abril de 2017

EJERCICIOS RESUELTOS DE BASE DE DATOS I consultas anidadas

EJERCICIOS RESUELTOS DE BASE DE DATOS  


Sea la siguiente BD:

PROVEEDORES (nro_p, nom_p, categoria, ciud_p)
ITEMS (nro_i, descripcion_i, ciud_i)
PEDIDOS (nro_p, nro_c, nro_i, cantidad, precio)
CLIENTES (nro_c, nom_c, ciud_c)


a) Listar los proveedores de Córdoba
SELECT Nro_P,
Nom_P
FROM PROVEEDORES
WHERE CIUD_P = 'CORDOBA';

b) Listar los proveedores que proveen el ítem 1
SELECT P.Nro_P, P.Nom_P
FROM ITEMS AS I, PEDIDOS AS PD, PROVEEDORES AS P
WHERE I.Descripcion_I = 'I1'
AND PD.Nro_I = I.Nro_I
AND P.Nro_P = PD.Nro_P;

c) Listar los clientes que solicitan ítems provistos por el proveedor 1
SELECT C.NRO_C, C.Nom_C
FROM CLIENTES AS C, PEDIDOS AS PD, PROVEEDORES AS P
WHERE P.Nom_P = 'P1'
AND PD.Nro_P = P.Nro_P
AND C.Nro_C = PD.Nro_C;

d) Listar los clientes que solicitan algú
n ítem provistos por proveedores con categoría
mayor que 4
SELECT C.Nro_C, C.Nom_C
FROM CLIENTES AS C
WHERE C.Nro_C IN (
SELECT DISTINCT PD.Nro_C
FROM PEDIDOS AS PD, PROVEEDORES AS P
WHERE P.Categoria > 4
AND PD.Nro_P = P.Nro_P
);

o bien :

SELECT DISTIN
CT CL.nro_c, CL.nom_c
FROM clientes CL
WHERE EXISTS (
SELECT *
FROM pedidos PE, proveedores PR
WHERE PE.nro_p = PR.nro_p
AND CL.nro_c = PE.nro_c
AND PR.categoria > 4
)

e) Listar los ítems pedidos por clientes de Rosario.
SELECT I.Nro_I, I.Descripcion_I
FROM ITEMS AS I
WHERE I.Nro_I IN (
SELECT PD.Nro_I
FROM CLIENTES AS C, PEDIDOS AS PD
WHERE C.Ciud_C = 'Rosario'
AND PD.Nro_C = C.Nro_C
);

o bien :

SELECT IT.nro_i, IT.descripcion_i
FROM items IT
WHERE EXISTS (
SELECT *
FROM clientes CL, pedidos PE
WHERE CL.nro_c = PE.nro_c
AND IT.nro_i = PE.nro_i
AND CL.ciud_c = 'rosario'
);

f) Listar los pedidos en los cuales un cliente de rosarios solicita artículos fabricados en Mendoza.

SELECT PR.nom_p, CL.nom_c, IT.descripcion_i, PE.cantidad, PE.precio
FROM proveedores AS PR, clientes AS CL, items AS IT, pedidos AS PE
WHERE PR.nro_p = PE.nro_p
AND CL.nro_c = PE.nro_c
AND IT.nro_i = PE.nro_i
AND CL.ciud_c = 'rosario'
AND IT.ciud_i = 'mendoza';
g) Listar los pedidos en los que el cliente 23 solicita ítems no solicitados por el cliente 30

SELECT PR1.nom_p, CL1.nom_c, IT1.descripcion_i, PE1.cantidad, PE1.precio
FROM proveedores PR1, clientes CL1, items IT1, pedidos PE1
WHERE PR1.nro_p = PE1.nro_p
AND CL1.nro_c = PE1.nro_c
AND IT1.nro_i = PE1.nro_i
AND PE1.nro_c =23
AND PE1.nro_i not in (SELECT IT2.nro_i
FROM items IT2, pedidos PE2
WHERE IT2.nro_i = PE2.nro_i
AND PE2.nro_c = 30
);

h) Listar las ciudades en la forma (ciudad1, ciudad2) tales que un proveedor en la ciudad1 provea
ítems solicitados por clientes en ciudad2

SELECT DISTINCT P.Ciud_P AS Ciudad1, C.Ciud_C AS Ciudad2
FROM PROVEEDORES AS P, CLIENTES AS C, PEDIDOS AS PD
WHERE P.Nro_P = PD.Nro_P
AND C.Nro_C = PD.Nro_C;

No hay comentarios:

Publicar un comentario

ENTRADAS POPULARES