Advertisement
NaFer

IMPARES SQL

Apr 18th, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.00 KB | None | 0 0
  1. --1. Películas en las que alguno de sus actores participantes también ha sido el director de la película (titulo,
  2. --director), ordenado por director.
  3.  
  4. SELECT titulo, director
  5. FROM participa par, pelicula peli
  6. WHERE par.pelicula = peli.titulo AND peli.director = par.actor
  7. ORDER BY director;
  8.  
  9. --3. Actores (actor) que han participado en más de dos películas del director ‘WOODY ALLEN’, ordenados
  10. --alfabéticamente
  11.  
  12. SELECT actor
  13. FROM participa
  14. WHERE pelicula IN(SELECT titulo
  15.                   FROM pelicula
  16.                   WHERE director = 'WOODY ALLEN')
  17. GROUP BY actor
  18. HAVING COUNT(*)>2
  19. ORDER BY actor;
  20.  
  21. --5. Para cada socio indicar la nacionalidad (nombre, teléfono, nacionalidad) más común entre las
  22. --películas que ha alquilado, las haya devuelto o no. Es decir, si un socio suele alquilar más películas
  23. --españolas que de cualquier otra nacionalidad, debe aparecer su nombre y teléfono junto con la
  24. --nacionalidad ‘ESPAÑA’. Ordenado por nombre de socio.
  25. SELECT nombre, telefono, nacionalidad
  26. FROM socio soci,  (SELECT todos.socio, todos.nacionalidad
  27.                    FROM (SELECT socio, nacionalidad, COUNT(*) cuenta2
  28.                          FROM alquiler alq, pelicula peli
  29.                          WHERE alq.pelicula = peli.titulo
  30.                          GROUP BY socio, nacionalidad) todos,
  31.                          (SELECT socio, MAX(cuenta)abc
  32.                           FROM(
  33.                                SELECT socio, nacionalidad, COUNT(*) cuenta
  34.                                FROM alquiler alq, pelicula peli
  35.                                WHERE alq.pelicula = peli.titulo
  36.                                GROUP BY socio, nacionalidad)
  37.                          GROUP BY socio) mayores
  38.                    WHERE todos.socio = mayores.socio AND mayores.abc = todos.cuenta2) resultado
  39. WHERE soci.dni = resultado.socio
  40. ORDER BY nombre;
  41.  
  42. --7. Socios (dni, nombre) que han alquilado todas las películas de la actriz ‘CECILIA ROTH’
  43. SELECT dni, nombre
  44. FROM socio
  45. WHERE dni IN( SELECT socio
  46.               FROM( SELECT DISTINCT alq.socio, alq.pelicula
  47.                     FROM participa par,alquiler alq
  48.                     WHERE actor = 'CECILIA ROTH' AND par.pelicula = alq.pelicula)
  49.               GROUP BY socio
  50.               HAVING COUNT(*) = (SELECT COUNT(*)
  51.                                  FROM participa
  52.                                  WHERE actor = 'CECILIA ROTH'));
  53.  
  54. --9. Socios avalistas de aquellos socios que no han devuelto alguna de las películas que tienen en alquiler
  55. --(nom_avalista, tel_avalista, nom_socio). Para aquellos socios que no tengan avalista, mostrar la
  56. --cadena ‘*SIN AVAL*’ en la columna nom_avalista. Ordenado por nom_socio..
  57. SELECT NVL(avalis.NOMBRE,'*SIN AVAL*') NOM_AVALISTA, NVL(avalis.telefono,' ') TEL_AVALISTA, avalado.nombre NOM_SOCIO
  58. FROM (socio avalado LEFT OUTER JOIN socio avalis ON avalado.avalista = avalis.dni)
  59. WHERE avalado.dni IN(
  60.                 SELECT DISTINCT socio
  61.                 FROM alquiler
  62.                 WHERE devolucion = 'NO')
  63. ORDER BY avalado.nombre
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement