
Problema entrecruzamiento tablas en consulta
Publicado por Jon (6 intervenciones) el 24/04/2017 12:54:09
Muy buenas a todos!
Este es mi primer post y no sé si lo posteo donde debo. Si no es así avisadme por favor.
El caso es el siguiente:
Tengo una tabla con clientes (t_clientes) con el nombre de cada cliente, cuenta con el que se lo identifica, nif, correo, etc. (ninguno repetido)
Otra tabla con los movimientos contables de todos los clientes (t_diario) con la cuenta que lo identifica, debe, haber, saldo,etc. (se repite varias veces cada cliente)
Y otra con las facturas de cada cliente (t_facturas) con la cuenta que lo identifica y el importe de las facturas (también se repite varias veces cada cliente).
El problema viene cuando intento hacer una consulta que me ponga los campos de "t_clientes" más la suma del saldo de "t_diario" para cada cliente más la suma del importe de "t_facturas" también para cada cliente.
Qué pasa? Que el resultado que me salta es la suma de los saldos de "t_diario" multiplicado por las veces que se repite el cliente en "t_facturas", y la suma del importe de "t_facturas" multiplicado por las veces que se repite el ciente en "t_diario".
Por ejemplo, la suma del saldo del cliente 001 en "t_diario" es de 500€, y hay 3 facturas a nombre de ese cliente en la tabla "t_facturas", pues el resultado que me salta en "Saldo" es 500*3 = 1500€.
No tengo ni idea de SQL pero he probado cambiando los INNER JOIN por LEFT JOIN y cosas así, pero no hay manera.
El código que se crea de la consulta es el siguiente
SELECT t_clientes.cuenta, (bla bla bla), Sum(t_diario.saldo) AS Saldo, Sum(t_facturas.importe) AS Importe
FROM (t_clientes INNER JOIN t_diario ON t_clientes.cuenta = t_diario.cuenta) INNER JOIN t_facturas ON t_clientes.cuenta = t_facturas.cuenta
GROUP BY t_clientes.cuenta;
Si sólo pongo una de las dos tablas de suma, (por ejemplo, pongo solo la tabla t_clientes con la t_diario y la suma de los saldos) el resultado sale bien, pero al poner las dos sumas, se multiplican entre sí como he expuesto antes y de ahí no salimos.
Agradecería cualquier ayuda.
Este es mi primer post y no sé si lo posteo donde debo. Si no es así avisadme por favor.
El caso es el siguiente:
Tengo una tabla con clientes (t_clientes) con el nombre de cada cliente, cuenta con el que se lo identifica, nif, correo, etc. (ninguno repetido)
Otra tabla con los movimientos contables de todos los clientes (t_diario) con la cuenta que lo identifica, debe, haber, saldo,etc. (se repite varias veces cada cliente)
Y otra con las facturas de cada cliente (t_facturas) con la cuenta que lo identifica y el importe de las facturas (también se repite varias veces cada cliente).
El problema viene cuando intento hacer una consulta que me ponga los campos de "t_clientes" más la suma del saldo de "t_diario" para cada cliente más la suma del importe de "t_facturas" también para cada cliente.
Qué pasa? Que el resultado que me salta es la suma de los saldos de "t_diario" multiplicado por las veces que se repite el cliente en "t_facturas", y la suma del importe de "t_facturas" multiplicado por las veces que se repite el ciente en "t_diario".
Por ejemplo, la suma del saldo del cliente 001 en "t_diario" es de 500€, y hay 3 facturas a nombre de ese cliente en la tabla "t_facturas", pues el resultado que me salta en "Saldo" es 500*3 = 1500€.
No tengo ni idea de SQL pero he probado cambiando los INNER JOIN por LEFT JOIN y cosas así, pero no hay manera.
El código que se crea de la consulta es el siguiente
SELECT t_clientes.cuenta, (bla bla bla), Sum(t_diario.saldo) AS Saldo, Sum(t_facturas.importe) AS Importe
FROM (t_clientes INNER JOIN t_diario ON t_clientes.cuenta = t_diario.cuenta) INNER JOIN t_facturas ON t_clientes.cuenta = t_facturas.cuenta
GROUP BY t_clientes.cuenta;
Si sólo pongo una de las dos tablas de suma, (por ejemplo, pongo solo la tabla t_clientes con la t_diario y la suma de los saldos) el resultado sale bien, pero al poner las dos sumas, se multiplican entre sí como he expuesto antes y de ahí no salimos.
Agradecería cualquier ayuda.
Valora esta pregunta


0