Access - Sumar campos de diferentes tablas relacionadas por un ID

 
Vista:

Sumar campos de diferentes tablas relacionadas por un ID

Publicado por Airam Suárez (2 intervenciones) el 20/02/2020 11:01:41
Buenos días,

He estado leyendo el foro y no se de qué manera buscar la solución a mi problema que seguro es de principiante:

Tengo tres tablas, vamos a llamarlas A, B y C

Cada una de ellas tiene un campo ID que se llama AñoOrden y están relacionadas entre sí por este campo.

Cada tabla tiene los campos "Bultos","Kilos" y "Volumen"

El caso es que quiero construir una tabla mediante una consulta que sume los Bultos, Kilos y Volumen por cada AñoOrden

El problema es que en algunas de las tablas no existen los mismos AñoOrden. Es decir, un AñoOrden por ejemplo "2020-150" solo está en la tabla A y B pero no en la C, por tanto al crear la tabla me omite ese Año Orden y yo necesito que si este AñoOrden no está en la C lo sume como 0. Ejemplo

AñoOrden 2020-150
Bultos (tabla A) = 20
Bultos (tabla B) = 50

En la tabla C no está el 2020-150 por tanto no existe ningún registro/línea

Lo que me hace la consulta es que en la nueva tabla no vuelca ningún registro con AñoOrden 2020-150 y necesito que me vuelque este registro y Bultos sume 70

Gracias,
Saludos,
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

Sumar campos de diferentes tablas relacionadas por un ID

Publicado por Anonimo (3316 intervenciones) el 20/02/2020 21:22:11
Para forzar un valor numérico hay trucos

Uno de los mas utilizados es la función NZ, que permite (con su segundo parámetro) poner una cifra alternativa (generalmente cero, pero puede ser cualquiera):
=Nz([campoxx]; 0)

Otro es forzar el valor como numero (puede estar en un campo alfanumérico) y aquí caben posibilidades, desde utilizar la función VAL a multiplicarlo por la unidad y asumo que hay muchas mas.

La solución optima siempre dependerá del entorno real.
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

Sumar campos de diferentes tablas relacionadas por un ID

Publicado por Airam Suárez (2 intervenciones) el 02/03/2020 12:25:07
Muchas gracias por la respuesta.

Las función Nz la he probado y me sigue sin funcionar. Este es el código que tengo hecho y me sigue omitiendo sumas en la que alguno de los valores no existe

SELECT [Sumatorio entregas].AñoOrden, Nz([Sumatorio entregas].[SumaDeBultos],0)+Nz([Sumatorio recogidas].[SumaDeBultos],0)+Nz([Sumatorio entregas manuales].[SumaDeBultos],0) AS SumaBultos, Nz([Sumatorio entregas].[SumaDeKilos],0)+Nz([Sumatorio recogidas].[SumaDeKilos],0)+Nz([Sumatorio entregas manuales].[SumaDeKilos],0) AS SumaKilos, Nz([Sumatorio entregas].[SumaDeVolumen],0)+Nz([Sumatorio recogidas].[SumaDeVolumen],0)+Nz([Sumatorio entregas manuales].[SumaDeVolumen],0) AS SumaVolumen, [Entregas modificado].Importe INTO [Sumatorio entregas y recogidas]

FROM [Sumatorio entregas manuales] INNER JOIN ([Entregas modificado] INNER JOIN ([Sumatorio entregas] INNER JOIN [Sumatorio recogidas] ON [Sumatorio entregas].AñoOrden = [Sumatorio recogidas].AñoOrden) ON [Entregas modificado].AñoOrden = [Sumatorio entregas].AñoOrden) ON [Sumatorio entregas manuales].AñoOrden = [Sumatorio entregas].AñoOrden

GROUP BY [Sumatorio entregas].AñoOrden, Nz([Sumatorio entregas].[SumaDeBultos],0)+Nz([Sumatorio recogidas].[SumaDeBultos],0)+Nz([Sumatorio entregas manuales].[SumaDeBultos],0), Nz([Sumatorio entregas].[SumaDeKilos],0)+Nz([Sumatorio recogidas].[SumaDeKilos],0)+Nz([Sumatorio entregas manuales].[SumaDeKilos],0), Nz([Sumatorio entregas].[SumaDeVolumen],0)+Nz([Sumatorio recogidas].[SumaDeVolumen],0)+Nz([Sumatorio entregas manuales].[SumaDeVolumen],0), [Entregas modificado].Importe;


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

Sumar campos de diferentes tablas relacionadas por un ID

Publicado por Anonimo (3316 intervenciones) el 02/03/2020 14:34:12
Creo que pretendes que Access invente datos y lo de inventar es porque (sin llegar a un detallado desglose de esa SQL) creo que intentas agrupar por datos que esta fabricando y eso …..

Una cosa es aplicar un valor alternativo ante un dato que se presupone (pero no existe: un campo con valor NULL) y otra es el inventarse un valor que se esta calculando en tiempo real.

Para esa opción (y de forma muy genérica) esta la función IsError (o IsDate, IsNumeric …) en conjunto con la función IIF para aplicar el valor alternativo.

Un consejo ganador: Divide y vencerás
- no pretendas hacerlo todo en una consulta, divide los cálculos y agrúpalos en la consulta final, posiblemente conseguirás lo que necesites y de encontrar algún inconveniente, sabrás donde estaría el fallo (al ser consultas independientes o mas simples -.
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