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