e.1 obtener los detalles completos de todos los proyectos. select jn, jnombre, ciudad from j;../.....
TRANSCRIPT
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 *
FROM j
WHERE ciudad =‘Las Palmas’;
SELECT jn, jnombre, ciudad
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ódigo-parte/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ódigo-parte/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 snFROM spjWHERE pn IN
(SELECT pnFROM spjWHERE sn IN
(SELECT snFROM spjWHERE pn IN
(SELECT pnFROM pWHERE 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 jnFROM spjWHERE pn=‘P1’GROUP BY jnHAVING AVG(cantidad) >
(SELECT MAX (cantidad)FROM spjWHERE 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 snFROM spj spjXWHERE pn=‘P1’AND cantidad >
(SELECT AVG (cantidad)FROM spj spjYWHERE 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 pnFROM spjWHERE EXISTS
(SELECT *FROM jWHERE jn=spj.jnAND 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.jnFROM spj spjXWHERE EXISTS
(SELECT *FROM spj spjYWHERE spjX.pn=spjY.pnAND 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 jnFROM jWHERE NOT EXISTS
(SELECT *FROM spjWHERE jn=j.jnAND pn IN
(SELECT pnFROM pWHERE color=‘rojo’)
AND sn IN(SELECT snFROM sWHERE 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 jnFROM spj spjXWHERE NOT EXISTS
(SELECT *FROM spj spjYWHERE EXISTS
(SELECT *FROM spj spjAWHERE spjA.sn = ‘S1’AND spjA.pn = spjY.pn)
AND NOT EXISTS(SELECT *FROM spj spjBWHERE spjB.sn = ‘S1’AND spjB.pn = spjY.pnAND 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 jnFROM spj spjXWHERE NOT EXISTS
(SELECT *FROM spj spjYWHERE EXISTS
(SELECT *FROM spj spjAWHERE spjA.pn = spjY.pnAND spjA.jn = spjX.jn)
AND NOT EXISTS(SELECT *FROM spj spjBWHERE spjB.sn = ‘S1’AND spjB.pn = spjY.pnAND 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 jnFROM spj spjXWHERE NOT EXISTS
(SELECT *FROM spj spjYWHERE EXISTS
(SELECT *FROM spj spjAWHERE spjA.sn = spjY.snAND spjA.pn IN
(SELECT pnFROM pWHERE color = ‘rojo’)
AND NOT EXISTS(SELECT *FROM spj spjBWHERE spjB.sn = spjY.snAND 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;