Soluciones+Select+Sencillos

code format="sql" PROMPT  1. Selecciona el apellido, el oficio y la localidad de los departamentos de aquellos empleados cuyo oficio sea "ANALISTA".

SELECT emple.apellido, emple.oficio, depart.loc FROM emple,depart WHERE oficio = 'ANALISTA' AND emple.dept_no = depart.dept_no;

PROMPT  2. Obten los datos de los empleados cuyo director (columna DIR de la tabla EMPLE) sea "CEREZO".

SELECT * FROM emple WHERE dir=(SELECT emp_no           FROM emple            WHERE apellido = 'CEREZO');

SELECT * FROM emple, emple director WHERE emple.dir= director.emp_no AND director.apellido='CEREZO';

PROMPT  3. Obtén los datos de los empleados del departamento de "VENTAS".

SELECT emple.apellido FROM emple WHERE dept_no = (SELECT dept_no                FROM depart                 WHERE dnombre = 'VENTAS');

SELECT emple.apellido FROM emple,depart WHERE emple.dept_no=depart.dept_no AND dnombre = 'VENTAS';

PROMPT  4. Obtén los datos de los departamentos que NO tengan empleados.

SELECT * FROM depart WHERE dept_no NOT IN (SELECT DISTINCT dept_no                 FROM emple);

SELECT * FROM depart WHERE dept_no <> ALL (SELECT DISTINCT dept_no                 FROM emple);

SELECT * FROM depart d WHERE NOT EXISTS (SELECT *                 FROM emple                  WHERE emple.dept_no=d.dept_no);

PROMPT  5. Obtén los datos de los departamentos que tengas empleados.

SELECT * FROM depart WHERE dept_no = any(SELECT dept_no                          FROM emple); --2 SELECT * FROM depart WHERE dept_no IN(SELECT dept_no FROM emple);

SELECT * FROM depart WHERE EXISTS (SELECT *             FROM emple              WHERE emple.dept_no=depart.dept_no);

PROMPT  6. Obtén el apellido y el salario de los empleados que superen todos los salarios de los empleados del departamento 20.

SELECT apellido, salario FROM emple WHERE salario > ALL (SELECT salario                   FROM emple                    WHERE dept_no = 20);

--2

SELECT apellido, salario FROM emple WHERE salario > (SELECT max(salario)                   FROM emple                    WHERE dept_no=20);

PROMPT  7. Visualiza el tema, estante y ejemplares de las filas de LIBRERIA con ejemplares comprendidos entre 8 y 15.

SELECT * FROM libreria WHERE ejemplares > 7 AND ejemplares < 16;

--2

SELECT * FROM libreria WHERE ejemplares BETWEEN 8 AND 15;

PROMPT  8. Visualiza las columnas TEMA, ESTANTE y EJEMPLARES de las filas cuyo ESTANTE no esté comprendido entre la "B" y la "D".

SELECT * FROM libreria WHERE estante > 'D' OR estante < 'B';

--2 SELECT * FROM libreria WHERE estante NOT BETWEEN 'B' AND 'D';

PROMPT  9. Visualiza con una sola orden SELECT todos los temas de LIBRERIA cuyo número de ejemplares sea inferior a los que hay en "MEDICINA".

SELECT l1.tema FROM libreria l1,libreria lmedicina WHERE lmedicina.tema='MEDICINA' AND l1.ejemplares20 OR ejemplares < 15

PROMPT 11. Visualiza todas las asignaturas que contengan tres letras "o" en su einterior y tengan alumnos matriculados en "Madrid".

SELECT nombre FROM asignaturas,notas,alumnos WHERE nombre LIKE '%o%o%o%' AND pobla ='Madrid' AND asignaturas.cod=notas.cod AND notas.dni=alumnos.dni;

PROMPT 12. Visualiza los nombres de alumnos de "Madrid" que tengan alguna asignatura suspensa.

SELECT apenom FROM alumnos WHERE pobla='Madrid' AND dni=(SELECT dni                             FROM notas                              WHERE nota < 5)

PROMPT 13. Muestra los nombres de alumnos que tengan la misma nota que tiene "Díaz Fernández, María" en "FOL" en alguna asignatura.

SELECT apenom, nota FROM alumnos, notas, asignaturas WHERE asignaturas.cod=notas.COD AND alumnos.dni=notas.dni AND nota=(SELECT nota           FROM notas            WHERE dni=(SELECT dni FROM alumnos WHERE apenom='Díaz Fernández, María')           AND cod=(SELECT cod FROM asignaturas WHERE nombre='FOL')                     );

SELECT UNIQUE apenom FROM alumnos, notas WHERE alumnos.dni=notas.dni AND nota=(SELECT nota       FROM notas,alumnos,asignaturas        WHERE notas.dni=alumnos.dni AND          notas.cod=asignaturas.cod AND          asignaturas.nombre='FOL' AND          alumnos.apenom='Díaz Fernández, María');

SELECT apenom FROM alumnos WHERE EXISTS (SELECT nota             FROM notas n              WHERE alumnos.dni=n.dni AND                n.nota =(SELECT nota FROM notas,alumnos,asignaturas WHERE notas.dni=alumnos.dni AND notas.cod=asignaturas.cod AND asignaturas.nombre='FOL' AND alumnos.apenom='Díaz Fernández, María'));

PROMPT 14. Obtén los datos de las asignaturas que no tengan alumnos.

SELECT * FROM asignaturas WHERE cod NOT IN (SELECT cod                 FROM notas);

PROMPT 15. Obtén el nombre y apellidos de los alumnos que tengan nota en la asignatura con código 1.

SELECT apenom FROM alumnos, notas WHERE alumnos.dni=notas.dni AND cod=1;

PROMPT 16. Obtén el nombre y apellidos de los alumnos que no tengan nota en la signatura con código 1.

SELECT UNIQUE apenom FROM alumnos WHERE dni NOT IN (SELECT dni                 FROM notas                  WHERE cod=1); code