330 likes | 434 Views
Obtener el código y la situación. de los suministradores. OPERACIONES DE RECUPERACIÓN. de Las Palmas. SELECT sn, situacion. FROM s. WHERE ciudad =‘Las Palmas’;. Obtener el código de parte de cada venta. RECUPERACIÓN SIMPLE. SELECT pn FROM sp;. Obtener el código
E N D
Obtener el código y la situación de los suministradores OPERACIONES DE RECUPERACIÓN. de Las Palmas SELECT sn, situacion FROM s WHERE ciudad=‘Las Palmas’;
Obtener el código de parte de cada venta RECUPERACIÓN SIMPLE. SELECT pn FROM sp;
Obtener el código de cada parte suministrada RECUPERACIÓN SIMPLE. SELECT DISTINCT pn FROM sp;
Obtener los detalles completos de todos los suministradores. RECUPERACIÓN SIMPLE. SELECT sn, snombre, situacion, ciudad FROM s; ../.. SELECT * FROM s;
Obtener el código de los suministradores de Las Palmas con situación mayor que 20. RECUPERACIÓN CUALIFICADA. SELECT sn FROM s WHERE ciudad=‘Las Palmas’ AND situacion>20;
Obtener el código y la situación de los suministradores de Las Palmas en orden descendente de situación. RECUPERACIÓN CON ORDENACIÓN. SELECT sn, situacion FROM s WHERE ciudad=‘Las Palmas’ ORDERBY situacion DESC;
RECUPERACIÓN DESDE MÁS DE UNA TABLA. Obtener, para cada parte suministrada, el código de parte y los nombres de las ciudades que suministran la parte. SELECT DISTINCT pn, ciudad FROM sp, s WHERE sp.sn=s.sn;
Obtener todos los pares de códigos de suministradores de forma que dos de ellos esten localizados en la misma ciudad. 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;
RECUPERACIÓN USANDO ANY. Obtener los nombres de los suministradores que suministran la parte ‘P2’. SELECT snombre FROM s WHERE sn = ANY (SELECT sn FROM sp WHERE pn=‘P2’); SELECT DISTINCT snombre FROM s, sp WHERE s.sn=sp.sn AND sp.pn=‘P2’; ../..
Obtener los códigos de los suministradores que tengan un valor de situación menor que el máximo valor de situación de la tabla s. RECUPERACIÓN USANDO <ANY. SELECT sn FROM s WHERE situacion < ANY (SELECT situacion FROM s);
Obtener los nombres de los suministradores que suministran la parte ‘P2’. RECUPERACIÓN USANDO IN. SELECT snombre FROM s WHERE sn IN (SELECT sn FROM sp WHERE pn=‘P2’); SELECT DISTINCT snombre FROM s, sp WHERE s.sn=sp.sn AND sp.pn=‘P2’; ../..
RECUPERACIÓN CON MULTIPLES NIVELES DE ANIDAMIENTO. 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’));
Obtener los nombres de los suministradores que suministran la parte ‘P2’. RECUPERACIÓN CON SUBQUERY, CON REFERENCIA ENTRE BLOQUES. SELECT snombre FROM s WHERE sn IN (SELECT sn FROM sp WHERE pn=‘P2’); ../.. SELECT DISTINCT snombre FROM s, sp WHERE s.sn=sp.sn AND sp.pn=‘P2’; ../.. SELECT snombre FROM s WHERE ‘P2’ IN (SELECT pn FROM sp WHERE sn=s.sn);
Obtener los códigos de los suministradores que suministren al menos una parte suministrada por ‘S2’. 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’);
RECUPERACIÓN CON SUBQUERY, CON REFERENCIA ENTRE BLOQUES Y LA MISMA TABLA IMPLICADA EN AMBOS BLOQUES. Obtener los códigos de las partes suministradas por mas de un suministrador. SELECT DISTINCT pn FROM sp spX WHERE pn IN (SELECT pn FROM sp WHERE sn <> spX.sn);
Obtener los nombres de los suministradores que NO suministran la parte ‘P2’. RECUPERACIÓN USANDO ALL. SELECT snombre FROM s WHERE ‘P2’ <> ALL (SELECT pn FROM sp WHERE sn=s.sn);
Obtener los códigos de los suministradores que están en la misma ciudad que el suministrador con código ‘S1’. 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 nombres de los suministradores que suministran la parte ‘P2’. RECUPERACIÓN USANDO EXISTS. SELECT snombre FROM s WHERE sn IN (SELECT sn FROM sp WHERE pn=‘P2’); ../.. SELECT DISTINCT snombre FROM s, sp WHERE s.sn=sp.sn AND sp.pn=‘P2’; ../.. SELECT snombre FROM s WHERE ‘P2’ IN (SELECT pn FROM sp WHERE sn=s.sn); ../.. SELECT snombre FROM s WHERE EXISTS (SELECT * FROM sp WHERE sn=s.sn AND pn=‘P2’);
Obtener los nombres de los suministradores que NO suministran la parte ‘P2’. RECUPERACIÓN USANDO NOT EXISTS. SELECT snombre FROM s WHERE NOT EXISTS (SELECT * FROM sp WHERE sn=s.sn AND pn=‘P2’); SELECT snombre FROM s WHERE ‘P2’ <> ALL (SELECT pn FROM sp WHERE sn=s.sn); ../..
Obtener los nombres de los suministradores que suministran todas las partes. 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 códigos de los suministradores que suministran al menos todas las partes suministradas por el suministrador con código ‘S2’. RECUPERACION USANDO NOT EXISTS. 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)); (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 códigos de las partes que o bien pesan mas de 18 kilos o bien son suministradas por ‘S2’ (o ambas cosas a la vez). RECUPERACION USANDO UNION. SELECT pn FROM p WHERE peso > 18 UNION SELECT pn FROM sp WHERE sn=‘S2’;
Obtener los códigos de parte y el peso en gramos de cada una de las partes. Los pesos de la tabla p estan en kilogramos. RECUPERACION DE VALORES CALCULADOS. SELECT pn, peso*1000 FROM p;
Obtener los códigos de los suministradores con un valor de situación mayor de 30. RECUPERACION IMPLICANDO NULL. SELECT sn FROM s WHERE situacion > 30;
Obtener los códigos de los suministradores con un valor de situación mayor de 30 o bien nulo. RECUPERACION IMPLICANDO NULL. SELECT sn FROM s WHERE situacion > 30 OR situacion ISNULL;
Obtener el numero total de suministradores. FUNCION COUNT EN LA CLAUSULA SELECT. SELECT COUNT (*) FROM s;
FUNCION COUNT EN LA CLAUSULA SELECT. Obtener el numero total de suministradores que suministren realmente alguna parte. SELECT COUNT (DISTINCT sn) FROM sp;
Obtener el numero de ventas de la parte ‘P2’. FUNCION COUNT EN LA CLAUSULA SELECT CON UN PREDICADO. SELECT COUNT (*) FROM sp WHERE pn=‘P2’;
Obtener la cantidad total suministrada de la parte ‘P2’. FUNCION SUM EN LA CLAUSULA SELECT CON UN PREDICADO. SELECT SUM(cantidad) FROM sp WHERE pn=‘P2’;
Obtener los códigos de los suministradores con situación menor que el máximo valor de situación de la tabla s. FUNCION MAX EN UN SUBQUERY. SELECT sn FROM s WHERE situacion < (SELECT MAX(situacion) FROM s);
Obtener para cada parte suministrada el código de parte y el total de la cantidad suministrada. USO DE GROUP BY. SELECT pn, SUM(cantidad) FROM sp GROUPBY pn;
Obtener los códigos de las partes suministradas por mas de un suministrador. USO DE GROUP BY CON HAVING. SELECT DISTINCT pn FROM sp spX WHERE pn IN (SELECT pn FROM sp WHERE sn <> spX.sn); ../.. SELECT pn FROM sp GROUP BY pn HAVING COUNT (*) > 1;
Obtener el código 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 código de parte dentro del orden ascendente de la cantidad maxima EJEMPLO RESUMEN. SELECT pn, MAX(cantidad) FROM sp WHERE cantidad > 200 GROUP BY pn HAVING SUM(cantidad) > 300 ORDER BY 2, pn DESC;