Usar función Silnm y Dbúsq juntas

Tengo en base a la tabla T-Pagos y la tabla T-Créditos una consulta que lo que hace es obtener el saldo de un determinado cliente, sus datos vienen de la tabla T-Clientes, hasta ahí todo bien.

El problema es que si el cliente no ha efectuado pagos, no hay de dónde restar nada, y por consecuencia ese cliente no aparece en la consulta, como se ve en las imágenes adjuntas

Habiendo 5 Clientes con créditos, solo se ven 2 (en la segunda imagen) ya que solo 2 han hecho pagos.

Lo que yo deseo hacer es que en la expresión que obtiene la Deuda Pendiente, es que si existen pagos de un cliente en la tabla pagos, entonces resultado sea el MontoCredito - MontoPago, pero en caso de que el cliente no figure en la tabla pagos, la deuda sea el valor total del crédito.

Incluyo SQL que access genera por defecto.

SELECT [T-Clientes].RutCliente, [C-Total Crédito Según Cliente].SumaDePagoCrédito, [C-Condición total de créditos según cliente].SumaDeMontoPago, [SumaDePagoCrédito]-[SumaDeMontoPago] AS [Deuda Pendiente]
FROM (([C-Total Crédito Según Cliente] INNER JOIN [T-Clientes] ON [C-Total Crédito Según Cliente].RutCliente = [T-Clientes].RutCliente) INNER JOIN [C-Condición total de créditos según cliente] ON [T-Clientes].RutCliente = [C-Condición total de créditos según cliente].RutCliente) INNER JOIN [T-Créditos] ON [T-Clientes].RutCliente = [T-Créditos].RutCliente
GROUP BY [T-Clientes].RutCliente, [C-Total Crédito Según Cliente].SumaDePagoCrédito, [C-Condición total de créditos según cliente].SumaDeMontoPago;

2 respuestas

Respuesta
1

Supongo que has utilizado el "Diseñador de Consultas" y en él has puesto las tablas "T-Clientes", "C-Total Crédito Según Cliente", "C-Condición total de créditos según cliente" y "T-Créditos", con las trés últimas "ligadas" mediante sus campos "RutCliente" a la tabla "T-Clientes".
Tienes que coger cada una de las tres uniones, hacer click con el botón derecho en las lineas de unión y modificar las características de la unión diciendo que te muestre todos los registros/Filas de "T-Clientes".
Verás que las líneas se convierten en flechas con las puntas en las tablas que estás ligando con "T-Clientes".
Salvas la consulta y tendrás los resultados deseados.
Lo que has hecho es cambiar las "INNER JOIN" por "LEFT JOIN" de la tabla T-Clientes con cada una de las demás.
INNER JOIN: El valor del campo de unión que utilizas, tiene que aparecer en las ds tablas que unes.
LEFT JOIN: Te muestra todos los registros/filas de la tabla de la Izquierda (donde no está la punta de flecha). Si el valor del cammpo de unión existe en la tabla de la derecha, te muestra la información que deseas y, si no existe, te muestra un "NULO", pero te muestra la fila que es lo que quieres.

Respuesta
1

Supongamos que tengo la tabla TCreditos

Y la tabla Tpagos

Donde puedes ver que el sinvergüenza de Carlos no ha pagado nada. No le prestes más.

Si construyo una consulta como

Al abrirla

Si el campo Cantidad lo agruparas por suma, te haría la ídem de todos los préstamos que había pedido. Esto tendría el inconveniente de que cuando te pagara algo no sabrías, por la consulta, a que crédito se refiere.

Lo que haría, con la tabla Clientes y la tabla Créditos, hacer un suma y sigue con lo cobrado y lo que queda pendiente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas