procedimiento que muestre los libros mas prestados y los nombres de los socios
Publicado por
Hol (1 intervención) el 16/05/2023 14:26:34
Hum, no conozco “toyota”…
Pero el SQL es un estándar y no debe ser muy alejado de algo como esto:
Inicialmente tienes que partir de la estructura de préstamos, de ésta obtienes el codigoSocio y codigoLibro con esos dos datos haces join para obtener nombre de libro y nombre del socio hacia libro y socio respectivamente y así obtener nombres de cada uno.
Entonces ese query te debería quedar parecido a esto:
SELECT T.titulo, S.apellido_nombre
FROM Prestamos P
INNER JOIN Socio S ON S.codigoSocio = P.codigoSocio
INNER JOIN Titulo S ON S.codigoLibro = P. codigoLibro
El SQL anterior te muestra nombres de cada uno de los pŕestamos implicados, falta aún los libros más prestados, pienso que al enunciado le falta decir cuántos, porque así quedaría una consulta muy pesada que podría devolver mucho registro, pero es solo agregar un agrupamiento.
Sin embargo, en todo esto hay una observación grande, y es que normalmente en los sistemas bibliotecarios, una vez que se hace efectiva la devolución de un libro, ese registro se elimina de esa estructura, pero se almacena en un histórico, donde queda todo el historial que ha tenido ese libro durante un tiempo determinado, pues de lógica la tabla de préstamos solo contiene los préstamos vigentes, y que solo admite una relación uno a uno respecto al libro, es decir yo solo puedo tener referenciado un código de libro, una y solamente una vez en esa tabla de préstamos, que puede haber varios ejemplares de un mismo libro, sí, pero con código único para cada ejemplar por supuesto.
Solo es agregar al query un Count(*) y agrupar por el titulo (Group By T.titulo), pero repito eso debería hacerse contra un histórico y limitar con cierta cantidad de registros, mostrar por periodos de tiempo por ejemplo durante el último mes.