Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Ejercicios => Mensaje iniciado por: SeñorX95 en 4 Mayo 2015, 11:22 AM

Título: Ejercicio PL/SQL
Publicado por: SeñorX95 en 4 Mayo 2015, 11:22 AM
Me pide que haga un programa en PL/SQL que calcule el numero de socios distintos que hayan alquilado cada pelicula. Los alquileres los saco de dos tablas: alquileres e historicoalquileres pero me tienen que salir juntos. Tengo este código pero no se juntar las dos tablas y que si es el mismo socio no me lo cuente dos veces.

Código (sql) [Seleccionar]

SET SERVEROUTPUT ON;
DECLARE
UnPelicula peliculas%ROWTYPE;
resultado INTEGER;
resultado2 INTEGER;
resultado3 INTEGER;


BEGIN
FOR UnPelicula IN
(SELECT peliculas.codp,peliculas.nombrep, count(distinct alquileres.codc) AS TOTAL
FROM socios, peliculas, alquileres
WHERE peliculas.codp=alquileres.codp
GROUP BY peliculas.codp,peliculas.nombrep
ORDER BY TOTAL DESC)
 
LOOP

resultado:=UnPelicula.TOTAL;

END LOOP;
    DBMS_OUTPUT.PUT_LINE('****HISTORICO-PRESTAMOS******');
    DBMS_OUTPUT.PUT_LINE('****HISTORICO-PRESTAMOS******');
    DBMS_OUTPUT.PUT_LINE('****HISTORICO-PRESTAMOS******');
FOR UnPelicula IN
(SELECT peliculas.codp,peliculas.nombrep, count(distinct historicoalquileres.codc) AS TOTAL
FROM socios, peliculas, historicoalquileres
WHERE peliculas.codp=historicoalquileres.codp
GROUP BY peliculas.codp,peliculas.nombrep
ORDER BY TOTAL DESC)
 
LOOP

resultado2:=UnPelicula.TOTAL;
resultado3:=resultado+resultado2;
DBMS_OUTPUT.PUT_LINE('**********');
DBMS_OUTPUT.PUT_LINE(UnPelicula.nombrep ||' '|| resultado3 || ' Socios Distintos');
DBMS_OUTPUT.PUT_LINE('**********');
END LOOP;


END;
/