E.1 Obtener los detalles completos de todos los proyectos.
SELECT jn, jnombre, ciudad
FROM j; ../..
SELECT *
FROM j;
E.2 Obtener los detalles completos de todos los proyectos de
‘Las Palmas’.
SELECT jn, jnombre, ciudad
FROM j
WHERE ciudad =‘Las Palmas’; ../..
SELECT *
FROM j
WHERE ciudad =‘Las Palmas’;
E.3 Obtener los códigos de los suministradores que
suministran partes al proyecto de código ‘J1’, ordenados por
código de proveedor.
SELECT DISTINCT sn
FROM spj
WHERE jn = ‘J1’ ORDER by sn;
E.4 Obtener todas las ventas en las cuales la cantidad está en
el intervalo 300 a 750 inclusive.
SELECT sn, pn, jn, cantidad
FROM spj
WHERE cantidad >= 300
AND cantidad <= 750;
E.5 Obtener una lista de todas las combinaciones
parte-color/parte-ciudad, eliminando todas las parejas
color/ciudad repetidas.
SELECT DISTINCT color, ciudad
FROM p;
E.6 Obtener todas las tripletas código-proveedor/códigoparte/código-proyecto tales que el proveedor, la parte y el
proyecto indicados estén todos en la misma ciudad
(cosituados) .
SELECT sn, pn, jn
FROM s, p, j
WHERE s.ciudad=p.ciudad
AND p.ciudad=j.ciudad;
E.7 Obtener todas las tripletas código-proveedor/código-parte/
código-proyecto tales que el proveedor, la parte y el proyecto
indicados no estén cosituados .
SELECT sn, pn, jn
FROM s, p, j
WHERE NOT (s.ciudad=p.ciudad
AND p.ciudad=j.ciudad); ../..
SELECT sn, pn, jn
FROM s, p, j
WHERE s.ciudad<>p.ciudad
OR p.ciudad<>j.ciudad;
E.8 Obtener todas las tripletas código-proveedor/códigoparte/código-proyecto tales que el proveedor, la parte y el
proyecto indicados estén todos en diferente ciudad .
SELECT sn, pn, jn
FROM s, p, j
WHERE s.ciudad<>p.ciudad
AND p.ciudad<>j.ciudad
AND s.ciudad<>j.ciudad;
E.9 Obtener los códigos de las partes suministradas por algún
proveedor de Las Palmas.
SELECT DISTINCT pn
FROM s, spj
WHERE s.sn=spj.sn
AND ciudad=‘Las Palmas’;
E.10 Obtener los códigos de las partes suministradas por un
suministrador de ‘Las Palmas’ a un proyecto en ‘Las Palmas’.
SELECT DISTINCT pn
FROM s, j, spj
WHERE s.sn=spj.sn
AND j.jn=spj.jn
AND s.ciudad=‘Las Palmas’
AND j.ciudad=‘Las Palmas’;
E.11 Obtener todas las parejas de nombres de ciudad tales que
un suministrador de la misma ciudad suministre partes a un
proyecto de la segunda ciudad.
SELECT DISTINCT s.ciudad, j.ciudad
FROM s, j, spj
WHERE s.sn=spj.sn
AND j.jn=spj.jn;
E.12 Obtener los códigos de las partes suministradas a un
proyecto por un suministrador situado en la misma ciudad que
el proyecto.
SELECT DISTINCT pn
FROM s, j, spj
WHERE s.sn=spj.sn
AND j.jn=spj.jn
AND s.ciudad=j.ciudad;
E.13 Obtener los códigos de los proyectos a los cuales
suministra partes por lo menos un suministrador situado en
una ciudad distinta.
SELECT DISTINCT j.jn
FROM s, j, spj
WHERE s.sn=spj.sn
AND j.jn=spj.jn
AND s.ciudad<>j.ciudad;
E.14 Obtener todas las parejas de códigos de parte tales que
algún suministrador suministre las dos partes indicadas.
SELECT DISTINCT spjX.pn, spjY.pn
FROM spj spjX, spj spjY
WHERE spjX.sn=spjY.sn
AND spjX.pn>spjY.pn;
E.15 Obtener el número total de proyectos a los cuales
suministra partes el suministrador de código ‘S1’.
SELECT COUNT (DISTINCT jn)
FROM spj
WHERE sn=‘S1’;
E.16 Obtener la cantidad total de la parte ‘P1’ suministrada
por el suministrador ‘S1’.
SELECT SUM (cantidad)
FROM spj
WHERE sn=‘S1’
AND pn=‘P1’;
E.17 Para cada parte suministrada a un proyecto, obtener el
código de parte, el código de proyecto y la cantidad total
correspondiente.
SELECT pn, jn, SUM (cantidad)
FROM spj
GROUP BY pn, jn;
E.18 Obtener los códigos de las partes suministradas a algún
proyecto tales que la cantidad promedio suministrada sea
mayor que 320.
SELECT DISTINCT pn
FROM spj
GROUP BY pn, jn
HAVING AVG(cantidad)>320;
E.19 Obtener todas las ventas para las cuales la cantidad no sea nula.
SELECT sn, pn, jn, cantidad
FROM spj
WHERE cantidad IS NOT NULL; ../..
SELECT sn, pn, jn, cantidad
FROM spj
WHERE cantidad = cantidad;
E.20 Obtener códigos de proyectos y ciudades en los cuales la
segunda letra del nombre de la ciudad sea una ‘O’.
SELECT jn, ciudad
FROM j
WHERE ciudad LIKE ‘_O%’;
E.21 Obtener los nombres de los proyectos a los cuales
suministra partes el suministrador con código ‘S1’.
SELECT jnombre
FROM j
WHERE jn IN
(SELECT jn
FROM spj
WHERE sn=‘S1’);
E.22 Obtener los colores de las partes suministradas por el
suministrador de código ‘S1’.
SELECT DISTINCT color
FROM p
WHERE pn IN
(SELECT pn
FROM spj
WHERE sn=‘S1’);
E.23 Obtener los códigos de las partes suministradas a
cualquier proyecto en ‘Las Palmas’.
SELECT DISTINCT pn
FROM spj
WHERE jn IN
(SELECT jn
FROM j
WHERE ciudad=‘Las Palmas’);
E.24 Obtener los códigos de los proyectos donde se utilice al
menos una de las partes suministradas por el suministrador de
código ‘S1’.
SELECT DISTINCT jn
FROM spj
WHERE pn IN
(SELECT pn
FROM spj
WHERE sn=‘S1’);
E.25 Obtener los códigos de los suministradores que
suministren por lo menos una de las partes suministradas por
al menos uno de los suministradores que suministran por lo
menos una parte roja.
SELECT DISTINCT sn
FROM spj
WHERE pn IN
(SELECT pn
FROM spj
WHERE sn IN
(SELECT sn
FROM spj
WHERE pn IN
(SELECT pn
FROM p
WHERE color=‘rojo’)));
E.26 Obtener los códigos de los suministradores cuya
situación sea inferior a la del suministrador de código ‘S1’.
SELECT sn
FROM s
WHERE situacion <
(SELECT situacion
FROM s
WHERE sn=‘S1’);
E.27 Obtener los códigos de los proyectos cuya ciudad sea la
primera en la lista alfabética de las ciudades donde hay
proyecto.
SELECT jn
FROM j
WHERE ciudad =
(SELECT MIN (ciudad)
FROM j);
E.28 Obtener los códigos de los proyectos a los cuales se
suministre la parte ‘P1’ en una cantidad promedio mayor que
la cantidad máxima en la cual se suministra alguna parte al
proyecto ‘J1’.
SELECT jn
FROM spj
WHERE pn=‘P1’
GROUP BY jn
HAVING AVG(cantidad) >
(SELECT MAX (cantidad)
FROM spj
WHERE jn=‘J1’);
E.29 Obtener los códigos de los suministradores que
suministren la parte ‘P1’ a algún proyecto en una cantidad
mayor que la cantidad promedio enviada de la parte ‘P1’ para
ese proyecto.
SELECT DISTINCT sn
FROM spj spjX
WHERE pn=‘P1’
AND cantidad >
(SELECT AVG (cantidad)
FROM spj spjY
WHERE pn=‘P1’
AND spjX.jn=spjY.jn);
E.30 Obtener los códigos de las partes suministradas a
cualquier proyecto en ‘Las Palmas’.
SELECT DISTINCT pn
FROM spj
WHERE EXISTS
(SELECT *
FROM j
WHERE jn=spj.jn
AND ciudad = ‘Las Palmas’);
E.31 Obtener los códigos de los proyectos donde se utilice al
menos una de las partes suministradas por el suministrador
‘S1’.
SELECT DISTINCT spjX.jn
FROM spj spjX
WHERE EXISTS
(SELECT *
FROM spj spjY
WHERE spjX.pn=spjY.pn
AND spjY.sn = ‘S1’);
E.32 Obtener los códigos de los proyectos a los cuales no
suministra ninguna parte ROJA ninguno de los
suministradores de Las Palmas.
SELECT jn
FROM j
WHERE NOT EXISTS
(SELECT *
FROM spj
WHERE jn=j.jn
AND pn IN
(SELECT pn
FROM p
WHERE color=‘rojo’)
AND sn IN
(SELECT sn
FROM s
WHERE ciudad = ‘Las Palmas’) );
E.33 Obtener los códigos de los proyectos para los cuales ‘S1’
es el único suministrador.
SELECT DISTINCT jn
FROM spj spjX
WHERE NOT EXISTS
(SELECT *
FROM spj spjY
WHERE spjY.jn = spjX.jn
AND spjY.sn <> ‘S1’);
E.34 Obtener los códigos de las partes suministradas a todos
los proyectos de ‘Las Palmas’.
SELECT DISTINCT pn
FROM spj spjX
WHERE NOT EXISTS
(SELECT *
FROM j
WHERE ciudad = ‘Las Palmas’
AND NOT EXISTS
(SELECT *
FROM spj spjY
WHERE spjY.pn = spjX.pn
AND spjY.jn = j.jn) );
E.35 Obtener los códigos de los suministradores que
suministran la misma parte a todos los proyectos.
SELECT DISTINCT sn
FROM spj spjX
WHERE EXISTS
(SELECT pn
FROM spj spjY
WHERE NOT EXISTS
(SELECT jn
FROM j
WHERE NOT EXISTS
(SELECT *
FROM spj spjZ
WHERE spjZ.sn = spjX.sn
AND spjZ.pn = spjY.pn
AND spjZ.jn = j.jn) ) );
E.36 Obtener los códigos de los proyectos a los cuales se
suministren por lo menos todas las partes suministradas por el
proveedor ‘S1’.
SELECT DISTINCT jn
FROM spj spjX
WHERE NOT EXISTS
(SELECT pn
FROM spj spjY
WHERE spjY.sn = ‘S1’
AND NOT EXISTS
(SELECT *
FROM spj spjZ
WHERE spjZ.pn = spjY.pn
AND spjZ.jn = spjX.jn) );
E.37 Obtener los códigos de los proyectos que utilicen sólo
partes suministradas por el suministrador ‘S1’.
SELECT DISTINCT jn
FROM spj spjX
WHERE NOT EXISTS
(SELECT *
FROM spj spjY
WHERE spjY.jn = spjX.jn
AND NOT EXISTS
(SELECT *
FROM spj spjZ
WHERE spjZ.pn = spjY.pn
AND spjZ.sn = ‘S1’) );
E.38 Obtener los códigos de los proyectos a los cuales el
suministrador ‘S1’ suministre todos los tipos de parte
suministrados por el.
SELECT DISTINCT jn
FROM spj spjX
WHERE NOT EXISTS
(SELECT *
FROM spj spjY
WHERE EXISTS
(SELECT *
FROM spj spjA
WHERE spjA.sn = ‘S1’
AND spjA.pn = spjY.pn)
AND NOT EXISTS
(SELECT *
FROM spj spjB
WHERE spjB.sn = ‘S1’
AND spjB.pn = spjY.pn
AND spjB.jn = spjX.jn) );
E.39 Obtener los códigos de los proyectos tales que al menos
cierta cantidad de cada parte utilicada por ellos le sea
suministrada por el suministrador ‘S1’.
SELECT DISTINCT jn
FROM spj spjX
WHERE NOT EXISTS
(SELECT *
FROM spj spjY
WHERE EXISTS
(SELECT *
FROM spj spjA
WHERE spjA.pn = spjY.pn
AND spjA.jn = spjX.jn)
AND NOT EXISTS
(SELECT *
FROM spj spjB
WHERE spjB.sn = ‘S1’
AND spjB.pn = spjY.pn
AND spjB.jn = spjX.jn) );
E.40 Obtener los códigos de los proyectos a los cuales
suministren partes todos y cada uno de los suministradores
que suministran alguna parte roja.
SELECT DISTINCT jn
FROM spj spjX
WHERE NOT EXISTS
(SELECT *
FROM spj spjY
WHERE EXISTS
(SELECT *
FROM spj spjA
WHERE spjA.sn = spjY.sn
AND spjA.pn IN
(SELECT pn
FROM p
WHERE color = ‘rojo’)
AND NOT EXISTS
(SELECT *
FROM spj spjB
WHERE spjB.sn = spjY.sn
AND spjB.jn = spjX.jn) ) );
E.41 Obtener una lista ordenada de todas las ciudades en las
cuales esté situado por lo menos un suministrador, una prte o
un proyecto.
SELECT ciudad FROM s
UNION
SELECT ciudad FROM p
UNION
SELECT ciudad FROM j
ORDER BY 1;
Descargar

Obtener los detalles completos de todos los proyectos.