Consulta en base a varias tablas con datos no coincidentes

En mi base de datos tengo una consulta llamada "C-Créditos vs Pagos", Que se basa principalmente de las tablas T-Clientes, T-Créditos otorgados y T-Pagos.

Lo que necesito obtener en la consulta es la deuda pendiente de cada cliente, el problema es que no todos los clientes han pagado, es decir, en la Tabla T-Pagos no están la misma cantidad de RutCliente que en la tabla T-Créditos otorgados, entonces al hacer la consulta solo me da la deuda de los que han pagado o abonado.

Como aquí

Cuando en realidad hay 3 Créditos más que corresponden a otros 2 clientes 

Pero estos no aparecen como pendientes en el fondo porque no presentan pagos, digo no aparecen pendientes porque tengo otra consulta en que ocupo los mismos datos y evalúa si el crédito está pagado o no, y nuevamente solo aparecen los pagos con abonos.

Les agradecería mucho si alguien puede darme alguna idea, ya que probé con Silnm y Dbúsq pero en este caso me solicita que todas las tablas estén en la consulta y al estar todas tampoco se hace el calculo de que si no hay pago, entonces el valor de deuda sea el valor total del crédito.

También intenté realizando una referencia cruzada, pero obtengo lo mismo, en formularios también.

SOLO ME FALTA SQL, pero no sé cómo realizarlo de esa manera.

HELP!

2 Respuestas

Respuesta
1

Si entendí bien, tienes 3 tablas

T-Clientes, T-Créditos y T-Pagos

e interpretando, se cruzan por RutCliente 

que tal si...

SELECT * 
FROM T-CLIENTES TCL
LEFT JOIN T-CREDITOS TCR ON TCR.RutCliente=TCL.RutCliente
LEFT JOIN T-PAGOS TPG ON TPG.RutCliente=TCR.RutCliente
WHERE TCL.RutCliente={RUT A BUSCAR}

Esto te cruza las 3 tablas por rut, en detalles

Si quieres ver la deuda contra pagos, quizás podrías hacer esta consulta, Si no te interesa filtrar un rut omite el Where

SELECT TCL.RutCliente,SUM(TCR.DEUDA) AS DEUDAS,SUM(TPG.PAGOS) AS PAGOS 
FROM T-CLIENTES TCL
LEFT JOIN T-CREDITOS TCR ON TCR.RutCliente=TCL.RutCliente
LEFT JOIN T-PAGOS TPG ON TPG.RutCliente=TCR.RutCliente
WHERE TCL.RutCliente={RUT A BUSCAR}
GROUP BY TCL.RutCliente

De primera me salió error de sintaxis en la clausula FROM 

Pensé que podría ser por los nombres de las tablas, pero tampoco, le puse corchetes, y tampoco, quedando como lo siguiente:

SELECT * 
FROM [T-Clientes] TCL
LEFT JOIN [T-Créditos otorgados] TCR ON TCR.RutCliente=TCL.RutCliente
LEFT JOIN [T-Pagos] TPG ON TPG.RutCliente=TCR.RutCliente
SELECT TCL.RutCliente,SUM(TCR.DEUDA) AS DEUDAS,SUM(TPG.PAGOS) AS PAGOS 
FROM [T-Clientes] TCL
LEFT JOIN [T-Créditos otorgados] TCR ON TCR.RutCliente=TCL.RutCliente
LEFT JOIN [T-Pagos] TPG ON TPG.RutCliente=TCR.RutCliente
GROUP BY TCL.RutCliente

Como dato extra: 

El campo de la tabla T-Créditos otorgados se llama MontoCredito ahí están los valores de los créditos 

El campo de la tabla T-Pagos se llama MontoPago

Adicionalmente también tengo una consulta donde tengo a los clientes que no han hecho ningún pago esta se llama C-Clientes sin ningún pago donde el campo Pago o Abono  que no es parte de ninguna tabla da un valor 0 a los clientes que no tienen pagos.

Por si ese dato sirve. 

Para que me puedas iluminar un poco más por favor. Gracias!!

cada select va separado

Ahora, la idea de esta consulta era obtener los saldos en general por rut

SELECT TCL.RutCliente,SUM(TCR.MontoCredito) AS DEUDAS,SUM(TPG.MontoPago) AS PAGOS 
FROM T-CLIENTES TCL
LEFT JOIN T-CREDITOS TCR ON TCR.RutCliente=TCL.RutCliente
LEFT JOIN T-PAGOS TPG ON TPG.RutCliente=TCR.RutCliente
GROUP BY TCL.RutCliente;

lo que no me queda claro o no se como funciona es tener nombre de tablas con acentos y espacios en blanco. Nunca lo he ocupado asi XD

En este ultimo query, hay que colocar los nombres de las tablas reales e intentar su ejecución

Ten en cuenta estas sugerencias

https://support.microsoft.com/es-es/office/reglas-para-dar-nombre-a-campos-controles-y-objetos-120c27fa-7ae1-4182-9baa-dbd183179cc3

¡Gracias! 

Es que soy novata, y no me acostumbro a dejar la ortografía, respecto a lo mencionado me sigue apareciendo error.

Si, así como esta escrito nunca va a conseguir el nombre de tabla, en especial si tienes espacios en blanco o acentos

Pero los consejos de link, te pueden ser útiles para futuros casos

Esperemos te logren ayudar, con la BD física

Suerte :)

Respuesta
1

Si no tiene datos confidenciales envíeme la base de datos [email protected]  y con gusto le remito la solución

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas