OPERACIONES DE RECUPERACIÓN.

Post on 11-Jan-2016

36 views 0 download

description

OPERACIONES DE RECUPERACIÓN. Obtener los codigos y la situacion de aquellos suministradores que esten en Las Palmas. SELECT sn, situacion FROM s WHERE ciudad=‘Las Palmas’;. 1 RECUPERACIÓN SIMPLE. Obtener el codigo de partes de cada parte suministrada. SELECT pn FROM sp;. - PowerPoint PPT Presentation

Transcript of OPERACIONES DE RECUPERACIÓN.

OPERACIONES DE RECUPERACIÓN.

SELECT sn, situacion

FROM s

WHERE ciudad=‘Las Palmas’;

Obtener los codigos y la situacion de aquellos suministradores

que esten en Las Palmas.

1 RECUPERACIÓN SIMPLE.

SELECT pn

FROM sp;

Obtener el codigo de partes de cada parte suministrada.

2.1 RECUPERACIÓN SIMPLE.

SELECT DISTINCT pn

FROM sp;

Obtener los codigos de las partes suministradas.

2.2 RECUPERACIÓN SIMPLE.

SELECT sn, snombre, situacion, ciudad

FROM s; ../..

SELECT *

FROM s;

Obtener los detalles completos de todos los suministradores.

2.3 RECUPERACIÓN CUALIFICADA.

SELECT sn

FROM s

WHERE ciudad=‘Las Palmas’

AND situacion>20;

Obtener los codigos de los suministradores en Las Palmas con situacion mayor que 20.

2.4 RECUPERACIÓN CON ORDENACIÓN.

SELECT sn, situacion

FROM s

WHERE ciudad=‘Las Palmas’

ORDER BY situacion DESC;

Obtener el codigo y la situacion de los suministradores de Las Palmas, en orden descendente de situacion.

2.5 RECUPERACIÓN DESDE MÁS DE UNA TABLA.

SELECT DISTINCT pn, ciudad

FROM sp, s

WHERE sp.sn=s.sn;

Obtener, para cada parte suministrada, el codigo de parte y los nombres de las ciudades que suministran la parte.

2.6 RECUPERACIÓN IMPLICANDO EL JOIN DE UNA TABLA CONSIGO MISMA.

SELECT sX.sn sY.sn

FROM s sX, s sY

WHERE sX.ciudad=sY.ciudad

AND sX.sn<sY.sn;

Obtener todos los pares de codigos de suministradores de froma que dos de ellos esten localizados en la misma ciudad.

2.7 RECUPERACIÓN USANDO ANY.

SELECT DISTINCT snombreFROM s, spWHERE s.sn=sp.snAND sp.pn=‘P2’; ../..

SELECT snombreFROM sWHERE sn = ANY

(SELECT snFROM spWHERE pn=‘P2’);

Obtener los nombres de los suministradores que suministran la parte ‘P2’.

2.8 RECUPERACIÓN USANDO <ANY.

SELECT snFROM sWHERE situacion < ANY

(SELECT situacionFROM s);

Obtener los codigos de los suministradores que tengan un valor de situacion menor que el maximo valor de situacion de la tabla s.

2.9 RECUPERACIÓN USANDO IN.

Obtener los nombres de los suministradores que suministran la parte ‘P2’.

SELECT snombreFROM sWHERE sn IN

(SELECT snFROM spWHERE pn=‘P2’);

SELECT DISTINCT snombreFROM s, spWHERE s.sn=sp.snAND sp.pn=‘P2’; ../..

Obtener los nombres de los suministradores que suministran, al menos, una parte roja.

SELECT snombre

FROM s

WHERE sn IN

(SELECT sn

FROM sp

WHERE pn IN

(SELECT pn

FROM p

WHERE color=‘rojo’));

2.10 RECUPERACIÓN CON MULTIPLES NIVELES DE ANIDAMIENTO.

2.11 RECUPERACIÓN CON SUBQUERY, CON REFERENCIA ENTRE BLOQUES.

SELECT snombreFROM sWHERE ‘P2’ IN

(SELECT pnFROM spWHERE sn=s.sn);

Obtener los nombres de los suministradores que suministran la parte ‘P2’.

SELECT DISTINCT snombreFROM s, spWHERE s.sn=sp.snAND sp.pn=‘P2’; ../..

SELECT snombreFROM sWHERE sn IN

(SELECT snFROM spWHERE pn=‘P2’); ../..

2.12 RECUPERACIÓN CON SUBQUERY, CON LA MISMA TABLA IMPLICADA EN AMBOS BLOQUES.

SELECT DISTINCT sn

FROM sp

WHERE pn IN

(SELECT pn

FROM sp

WHERE sn=‘S2’);

Obtener los códigos de los suministradores que suministren al menos una parte suministrada por ‘S2’.

2.13 RECUPERACIÓN CON SUBQUERY, CON REFERENCIA ENTRE BLOQUES Y LA MISMA TABLA IMPLICADA EN AMBOS BLOQUES.

SELECT DISTINCT pnFROM sp spXWHERE pn IN

(SELECT pnFROM spWHERE sn <> spX.sn);

Obtener los codigos de las partes suministradas por mas de un suministrador.

2.14 RECUPERACIÓN USANDO ALL.

SELECT snombreFROM sWHERE ‘P2’ <> ALL

(SELECT pnFROM spWHERE sn=s.sn);

Obtener los nombres de los suministradores que NO suministran la parte ‘P2’.

2.15 RECUPERACIÓN CON SUBQUERY Y OPERADOR DE COMPARACIÓN SIN CUALIFICAR.

SELECT sn

FROM s

WHERE ciudad =

(SELECT ciudad

FROM s

WHERE sn=‘S1’);

Obtener los codigos de los suministradores que están en la misma ciudad que el suministrador con codigo ‘S1’.

2.16 RECUPERACIÓN USANDO EXISTS.

SELECT snombreFROM sWHERE ‘P2’ IN

(SELECT pnFROM spWHERE sn=s.sn); ../..

Obtener los nombres de los suministradores que suministran la parte ‘P2’.

SELECT DISTINCT snombreFROM s, spWHERE s.sn=sp.snAND sp.pn=‘P2’; ../..

SELECT snombreFROM sWHERE sn IN

(SELECT snFROM spWHERE pn=‘P2’); ../..

SELECT snombreFROM sWHERE EXISTS

(SELECT *FROM spWHERE sn=s.snAND pn=‘P2’);

2.17 RECUPERACIÓN USANDO NOT EXISTS.

SELECT snombreFROM sWHERE ‘P2’ <> ALL

(SELECT pnFROM spWHERE sn=s.sn); ../..

Obtener los nombres de los suministradores que NO suministran la parte ‘P2’.

SELECT snombreFROM sWHERE NOT EXISTS

(SELECT *FROM spWHERE sn=s.snAND pn=‘P2’);

2.18 RECUPERACIÓN USANDO NOT EXISTS.

SELECT snombre

FROM s

WHERE NOT EXISTS

(SELECT *

FROM p

WHERE NOT EXISTS

(SELECT *

FROM sp

WHERE sn = s.sn

AND pn=p.pn));

Obtener los nombres de los suministradores que suministran todas las partes.

2.19 RECUPERACION USANDO NOT EXISTS.

(esta solución pasaría por la creación previa de una tabla ‘temp’, en la que sólo estarían los códigos de las partes suministradas por ‘S2’)

SELECT DISTINCT sn

FROM sp spX

WHERE NOT EXISTS

(SELECT *

FROM temp

WHERE NOT EXISTS

(SELECT *

FROM sp

WHERE sn=spX.sn

AND pn=temp.pn)); ..\..

Obtener los codigos de los suministradores que suministran al menos todas las partes suministradas por el suministrador con codigo ‘S2’.

SELECT DISTINCT sn

FROM sp spX

WHERE NOT EXISTS

(SELECT *

FROM sp spY

WHERE sn=‘S2’

AND NOT EXISTS

(SELECT *

FROM sp

WHERE sn=spX.sn

AND pn=spY.pn));

2.20 RECUPERACION USANDO UNION.

SELECT pn

FROM p

WHERE peso > 18

UNION

SELECT pn

FROM sp

WHERE sn=‘S2’;

Obtener los codigos de las partes que o bien pesan mas de 18 kilos o bien son suministradas por ‘S2’ (o ambas cosas a la vez).

2.21 RECUPERACION DE VALORES CALCULADOS.

SELECT pn, peso*1000

FROM p;

Obtener los codigos de parte y el peso en gramos de cada una de las partes. Los pesos de la tabla p estan en kilogramos.

2.22a RECUPERACION IMPLICANDO NULL.

SELECT sn

FROM s

WHERE situacion > 30;

Obtener los codigos de los suministradores con un valor de situacion mayor de 30.

2.22b RECUPERACION IMPLICANDO NULL.

SELECT sn

FROM s

WHERE situacion > 30

OR situacion IS NULL;

Obtener los codigos de los suministradores con un valor de situacion mayor de 30 o es nulo.

3.1 FUNCION COUNT EN LA CLAUSULA SELECT.

SELECT COUNT (*)

FROM s;

Obtener el numero total de suministradores.

3.2 FUNCION COUNT EN LA CLAUSULA SELECT.

SELECT COUNT (DISTINCT sn)

FROM sp;

Obtener el numero total de suministradores que suministren realmente alguna parte.

3.3 FUNCION COUNT EN LA CLAUSULA SELECT CON UN PREDICADO.

SELECT COUNT (*)

FROM sp

WHERE pn=‘P2’;

Obtener el numero de ventas de la parte ‘P2’.

3.4 FUNCION SUM EN LA CLAUSULA SELECT CON UN PREDICADO.

SELECT SUM(cantidad)

FROM sp

WHERE pn=‘P2’;

Obtener la cantidad total suministrada de la parte ‘P2’.

3.5 FUNCION MAX EN UN SUBQUERY.

SELECT sn

FROM s

WHERE situacion <

(SELECT MAX(situacion)

FROM s);

Obtener los códigos de los suministradores con situacion menor que el maximo valor de situacion de la tabla s.

3.6 USO DE GROUP BY.

SELECT pn, SUM(cantidad)

FROM sp

GROUP BY pn;

Obtener para cada parte suministrada el codigo de parte y el total de la cantidad suministrada.

3.7 USO DE GROUP BY CON HAVING.

SELECT DISTINCT pnFROM sp spXWHERE pn IN

(SELECT pnFROM spWHERE sn <> spX.sn); ../..

Obtener los codigos de las partes suministradas por mas de un suministrador.

SELECT pnFROM spGROUP BY pnHAVING COUNT (*) > 1;

3.8 EJEMPLO RESUMEN.

SELECT pn MAX(cantidad)

FROM sp

WHERE cantidad > 200

GROUP BY pn

HAVING SUM(cantidad) > 300

ORDER BY 2, pn DESC;

Obtener el codigo de parte y la cantidad maxima suministrada de esa parte para todas las partes tales que la cantidad suministrada es mayor a 300 (excluyendo del total las ventas cuya cantidad sea menor o igual a 200), ordenando el resultado en orden descendente del codigo de parte dentro del orden ascendente de la cantidad maxima