Combinar registro de una tabla con SUM de otra por cada registro

publicado por: Anonymous

Como parte de mi base de datos tengo 2 tablas (clientes y préstamos), de las cuales me interesa operar con los siguientes campos:

  • PRÉSTAMOS: (ID de cliente, Monto del préstamo)
  • CLIENTES: (ID de cliente)

Considera que un cliente, puede tener varios préstamos.

Lo que debo hacer, es generar una vista que muestre a todos los clientes (su información personal) y al final del registro la suma de los montos de sus préstamos. Me explico con un ejemplo…

Si en USUARIOS tengo a Juan con id=1 y en PRÉSTAMOS tengo registrado que el cliente con id=1 pidió 3 préstamos de $100, $200 y $300, debo mostrar el siguiente registro:

ID: 1 –
Nombre: Juan –
(Otros campos de información)
Deuda: $600

Y así para todos los clientes, si un cliente no ha pedido préstamos igual muestro su registro con un “$0” al final.

Tengo la restricción de que no debo crear el campo Deuda en la tabla CLIENTES (lo cuál entiendo porque generaría redundancia).

Mi problema es que no sé cómo asignar la suma de montos de PRÉSTAMOS a su respectivo usuario en CLIENTES

¿Alguien puede ayudarme con la consulta?

solución

He hecho un ejemplo creando una función para obtener el total de deuda de un cliente.

Función obtenerDeuda:

CREATE FUNCTION `obtenerDeuda`(id INT) 
RETURNS int(11)
BEGIN
RETURN (SELECT SUM(monto) from Prestamos where idCliente = id);
END

La función retorna la suma de la columna monto de los registros con el id del cliente.

Uso de la función en una consulta:

SELECT
Clientes.nombre,Clientes.apellidos,Clientes.telefono,obtenerDeuda(Clientes.idCliente) as deuda
FROM
Clientes 
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *