jueves, 29 de diciembre de 2011

Soluciones ejercicios Tema 3.Case

EJERCICIOS TEMA3.CASE-LIBRO
TABLA EMPLE Y DEPART
1.       Selecciona el apellido, oficio y localidad de los departamentos de aquellos empleados cuyo oficio sea ANALISTA.

SELECT APELLIDO, OFICIO, LOC FROM EMPLE, DEPART
WHERE OFICIO='ANALISTA'
/

2.       Obtén 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 OFICIO='DIRECTOR' AND APELLIDO= 'CEREZO')
/

3.       Obtén los datos de los empleados del departamento de VENTAS.
SELECT*FROM EMPLE
WHERE DEPT_NO= (SELECT DEPT_NO FROM DEPART WHERE DNOMBRE='VENTAS')
/
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)
/
5.       Obtén los datos de los departamentos que tengan empleados.
SELECT*FROM DEPART
WHERE EXISTS (SELECT * FROM EMPLE, DEPART WHERE EMPLE.DEPT_NO=DEPART.DEPT_NO)
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> (SELECT MAX (SALARIO) FROM EMPLE WHERE DEPT_NO=20)

TABLA LIBRERIA
7.      Visualiza el tema, estante y ejemplares de las filas de librería con ejemplares entre 8 y 15.
SELECT * FROM LIBRERIA WHERE EJEMPLARES BETWEEN 8 AND 15

8.      Visualiza las columnas tema, estante y ejemplares de las filas cuyo estante no este comprendido entre la “B” y la “D”.
SELECT TEMA, ESTANTE, EJEMPLARES FROM LIBRERIA
WHERE ESTANTE NOT BETWEEN 'B' AND 'D';

9.      Visualiza con una sola orden select todos los temas de librería cuyo número de ejemplares sea inferior a los que hay en medicina.

SELECT TEMA FROM LIBRERIA
 WHERE EJEMPLARES < (SELECT EJEMPLARES FROM LIBRERIA WHERE TEMA ='MEDICINA')
10.  Visualiza los temas de librería cuyo número de ejemplares no esté entre 15 y 20, ambos incluidos.
SELECT TEMA FROM LIBRERIA WHERE EJEMPLARES NOT BETWEEN 15 AND 20

11.  Visualiza todas las asignaturas que contengan tres letras “o” en su interior y tengan alumnos matriculados de “Madrid”.
SELECT * FROM ASIGNATURAS
WHERE NOMBRE LIKE '%O%' AND COD IN (SELECT COD FROM NOTAS
WHERE DNI IN (SELECT DNI FROM ALUMNOS WHERE POBLA='Madrid'))

12.  Visualiza los nombres de los alumnos de Madrid que tengan alguna asignatura suspensa.
SELECT APENOM FROM ALUMNOS
WHERE POBLA='Madrid' AND DNI IN (SELECT DNI FROM NOTAS WHERE NOTA<5);

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 FROM ALUMNOS, NOTAS WHERE NOTA IN (SELECT NOTA FROM NOTAS WHERE COD IN
(SELECT COD FROM ASIGNATURAS WHERE NOMBRE='FOL')AND DNI IN (SELECT DNI FROM ALUMNOS
WHERE APENOM='Díaz Fernández, María') AND ALUMNOS.DNI=NOTAS.DNI)

14.  Obtén los datos de las asignaturas que no tengan alumnos.
SELECT*FROM ASIGNATURAS
WHERE COD NOT IN (SELECT COD FROM NOTAS)
/

15.  Obtén el nombre y apellido 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
16.  Obtén el nombre y apellido de los alumnos que no tengan nota en la asignatura con código 1.
SELECT UNIQUE APENOM FROM ALUMNOS
WHERE DNI NOT IN (SELECT DNI FROM NOTAS WHERE COD=1)

6 comentarios:

  1. hola buenas ! el primer ejercicio esta mal seria
    SELECT APELLIDO, OFICIO, LOC FROM EMPLE, DEPART
    WHERE OFICIO='ANALISTA' AND EMPLE.DEPT_NO=DEPART.DEPT_NO ;

    ResponderEliminar
  2. hola buenas ! el quinto ejercicio esta mal tambien
    SELECT * FROM DEPART WHERE DEPT_NO IN (SELECT DEPT_NO FROM EMPLE);

    ResponderEliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. En el ejercicio numero 9 también esta mal, pide utilizando un solo SELECT con lo que tendríamos que utilizar los ALIAS:
    SELECT l1.TEMA
    FROM LIBRERIA l1, LIBRERIA l2
    WHERE l2.TEMA = 'Medicina' AND
    l1.EJEMPLARES < l2.EJEMPLARES;

    ResponderEliminar
  5. hola buenas ! el ejercicio 11 esta mal también, sería:
    SQL> SELECT NOMBRE FROM ASIGNATURAS WHERE NOMBRE LIKE '%o%o%o%' AND COD IN (SELECT COD FROM ALUMNOS, NOTAS WHEREALUMNOS.DNI=NOTAS.DNI AND POBLA='Madrid');

    ResponderEliminar
  6. hola buenas ! el ejercicio 11 esta mal también, sería:
    SQL> SELECT NOMBRE FROM ASIGNATURAS WHERE NOMBRE LIKE '%o%o%o%' AND COD IN (SELECT COD FROM ALUMNOS, NOTAS WHERE ALUMNOS.DNI=NOTAS.DNI AND POBLA='Madrid');

    ResponderEliminar