Access - Problema entrecruzamiento tablas en consulta

 
Vista:
sin imagen de perfil

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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Problema entrecruzamiento tablas en consulta

Publicado por Norberto (753 intervenciones) el 24/04/2017 14:22:47
Hola.

Lo que tienes que hacer es sendas consultas de totales para que te calcule la suma de saldos y de las facturas por separado y juntarlas con la tabla de clientes en una tercera consulta.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema entrecruzamiento tablas en consulta

Publicado por Jon (6 intervenciones) el 25/04/2017 09:44:43
Primero de todo muchas gracias por la respuesta.

El caso es que esto lo he de hacer con 60 empresas, cada consulta/tabla de más que haga, lo tendré que hacer 60 veces más.
Por eso lo que busco es ayuda en el código para que en una sola consulta pueda tener los datos de la tabla "t_clientes", la suma del saldo por cliente de la tabla "t_diario" y la suma del importe de las factures de "t_facturas".

Por otra parte, si se puede hacer con codigo VBA con una macro que vaya recorriendo el campo "cuentas" de la tabla "t_clientes" y vaya sumando saldos e importes de las otras dos tablas en un bucle y al final me haga una consulta con los resultados, pues también serviría. Pero en eso aun voy más perdido. Sólo he sabido hacer que me haga la suma de una sola cuenta puesta a mano por mí.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Problema entrecruzamiento tablas en consulta

Publicado por Norberto (753 intervenciones) el 25/04/2017 11:14:14
Hola.

No me has entendido. No tienes que hacer una consulta por empresa sino una para que te totalice las facturas para cada cliente, otra para que te totalice el diario y una tercera para unirlas con la tabla clientes.

1 (c_saldos). SELECT Cuenta, Sum(Saldo) AS SaldoTotal FROM t_diario GROUP BY Cuenta;

2 (c_facturas). SELECT Cuenta, Sum(Importe) AS TotalFacturas FROM t_facturas GROUP BY Cuenta;

3 (c_resumen). SELECT t_Clientes.* FROM t_clientes, c_saldos.SaldoTotal, c_facturas.TotalFacturas FROM (t_clientes INNER JOIN c_saldos ON t_clientes.cuenta = c_saldos.cuenta) INNER JOIN c_facturas ON t_clientes.cuenta = c_facturas.cuenta;

La consulta c_saldos tendrá tantos registros como clientes tengan algún movimento totalizando para cada uno de ellos el saldo.
La consulta c_facturas idem el importe.
La consulta c_resumen tendrá todos los clientes con los totales de saldo y facturas.

Las he hecho a pelo por lo que puede haber algún error de sintaxis. Espero que te funcionen.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema entrecruzamiento tablas en consulta

Publicado por Jon (6 intervenciones) el 27/04/2017 09:54:54
Buenas Norberto

La cosa es que yo he hecho una explicación genérica, pero que "t_clientes" por ejemplo seria "t_clientes_movistar", con "t_facturas_movistar" y "t_diario_movistar". Después tendría esto también con "t_clientes_nissan", "t_facturas_nissan" y "t_diario_nissan", y así con 60 empresas diferentes, cada una con sus clientes y proveedores que son los que he de localizar y agrupar con las consultas.
Por eso dije que cada consulta o tabla de más que haga, serán 60 tablas o consultas de más que deba hacer.

Por eso la búsqueda de hacerlo todo con una sola consulta porque si no son muchas horas de trabajo adicional a parte de dejar un archivo enorme con, pon que 300 tablas y otras 200 consultas. Sería un caos para una empresa pequeña como esta.


Muchas gracias igualmente!

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Problema entrecruzamiento tablas en consulta

Publicado por Norberto (753 intervenciones) el 27/04/2017 15:14:22
Hola.

Te falla el planteamiento. No puedes hacer una tabla para cada compañia. Tienes que poner toda la información en una sóla y a través de un campo indicar el tipo de cliente (movistar, nissan, etc.) si quieres acceder a uno de ellos, usas filtros o consultas por dicho campo.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema entrecruzamiento tablas en consulta

Publicado por Jon (6 intervenciones) el 28/04/2017 10:54:55
Buenas

Eso que comentas es totalmente imposible. Cada empresa va por separado y tiene sus propios clientes y proveedores, con su contabilidad y sus propias facturas y se trabajan de una en una. A parte que todo viene de cada diario contable que cada empresa nos pasa en excel. No se puede mezclar nada.

Total, que lo que comentas no se puede hacer, cada empresa ha de ir por su cuenta y ha de tener sus tres tablas. De ahí lo de intentar hacerlo todo con el menor número de consultas y pasos intermedios, porque se han de trabajar por separado más de 60 empresas diferentes.

Pero ya hemos decidido que recurriremos a una empresa experta en programación para que nos lo haga todo.

Muchísimas gracias igualmente por tu interés y tus respuestas

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Problema entrecruzamiento tablas en consulta

Publicado por Jon (6 intervenciones) el 28/04/2017 12:12:31
Dada la decisión de acudir a expertos este tema carece de sentido así que se puede cerrar. Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar