Ejercicios SQL y Algebra Relacional
Enviado por Albert • 10 de Noviembre de 2017 • 618 Palabras (3 Páginas) • 1.315 Visitas
...
EJERCICIO A RESOLVER
- Seleccionar los identificadores de componentes que se suministren para los artículos 'T1' y 'T2'.
Π numprov (σ numartic=”T1” (envios)) ∩ π numprov(σ numartic=”T2”(envios))
mysql> select numprov from envios where numartic like "T1" union select numprov from envios where numartic like "T2";
[pic 2]
- Seleccionar el identificador de proveedor y el número de envíos de componentes de color 'ROJO' llevados a cabo por cada proveedor.
Π (numprov) ƒ COUNT(*) numcompo ( Envíos * (σ Color = 'ROJO' (Componentes)) )
mysql> SELECT numprov, count(*) numcompo FROM envios WHERE numcompo IN (SELECT numcompo FROM componentes WHERE color = 'ROJO');
---------------------------------------------------------------
- Seleccionar los colores de componentes suministrados por el proveedor 'P1'.
Π color (Componentes * (σ numprov = 'P1' (Envíos)) )
mysql>SELECT DISTINCT color FROM componentes WHERE numcompo IN (SELECT DISTINCT numcompo FROM envios WHERE numprov = 'P1');
[pic 3]
- Seleccionar los datos de envío y nombre de ciudad de aquellos envíos que cumplan que el artículo, proveedor y componente son de la misma ciudad.
π numcompo, numartic, numprov, cantidad, ciudad (Artículos * ( Proveedores * ( Envíos * Componentes)))
SELECT e.*, c.ciudad FROM envios e, componentes c, articulos a, proveedores p WHERE e.numartic = a.numartic AND e.numcompo = c.numcompo AND e.numprov = p.numprov AND p.ciudad=c.ciudad AND p.ciudad = a.ciudad;[pic 4]
- Seleccionar los nombres de los componentes que son suministrados en una cantidad total superior a 500.
π cnombre (Componentes * (σ (S > 500)( π (numcompo) ƒ SUM(cantidad) S ( Envíos)) ) )
SELECT DISTINCT cnombre FROM componentes WHERE numcompo IN (SELECT numcompo FROM envios GROUP BY numcompo HAVING SUM(cantidad)> 500);
[pic 5]
6. Seleccionar los identificadores de proveedores que residan en COMITAN y no su ministren más de dos artículos distintos.
π numprov (σ ciudad='COMITAN' (Proveedores)) ∩ π numprov (σ (numcompo ƒ (numprov) ƒ COUNT(DISTINCT numartic) C ( Envíos) ) )
(SELECT numprov FROM proveedores WHERE ciudad=’COMITAN') MINUS (SELECT numprov FROM envios GROUP BY numprov HAVING COUNT (D
ISTINCT numartic) > 2);
7. Seleccionar los identificadores de artículos para los cuales todos sus componentes se fabrican en una misma ciudad.
π numartic (σ ( C = 1) (π (numartic) ƒ COUNT(DISTINCT ciudad) C (Componentes * Envíos ) ) )
SELECT numartic FROM envios e, componentes c WHERE e.numcompo = c.numcompo GROUP BY numartic HAVING COUNT(DISTINCT ciudad) = 1 ;
[pic 6]
8. Seleccionar los identificadores de artículos para los que se provean envíos de todos los componentes existentes en la base de datos.
π numartic ( Envíos ÷ π numcompo(Componentes))
SELECT numartic FROM Envios GROUP BY numartic HAVING COUNT(DISTINCT numcompo) = ( SELECT COUNT(*) FROM Componentes) ;
[pic 7]
9. Seleccionar los códigos de proveedor y artículo que suministran al menos dos componentes de color 'ROJO'.
Π numprov,numartic (σ (numcompo > 1)( π (numprov, numartic) ƒ COUNT(*) C ( Envíos * (σ color='ROJO' (Componentes))))
SELECT numprov, numartic FROM envios e,componentes c WHERE e.numcompo = c.numcompo AND c.color='ROJO' GROUP BY numprov, numartic;
[pic 8]
10. Propón tu mismo(a) consultas que puedan realizarse sobre esta base de datos de ejemplo. Intenta responderla, y si te parece un problema interesante o no estás seguro de su solución, puedes exponerlos en las clases prácticas para su resolución en grupo. (vale X 10 PUNTOS)
...