Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Suma de datos de diferentes tablas

Estas en el tema de Suma de datos de diferentes tablas en el foro de Bases de Datos General en Foros del Web. Tengo tres tablas: Fabricas: [idfabrica],[nombre] Sueldos: [Idfabrica],[sueldo],[Fecha] Pagosextra; [Idfabrica],[Pagos],[fecha] Supongamos los siguientes datos: Fabricas: 1 A; 2 B; 3 C Sueldos: 1 100 31/01/08; 2 ...
  #1 (permalink)  
Antiguo 22/01/2008, 11:18
 
Fecha de Ingreso: diciembre-2007
Mensajes: 6
Antigüedad: 16 años, 4 meses
Puntos: 0
Suma de datos de diferentes tablas

Tengo tres tablas:

Fabricas: [idfabrica],[nombre]
Sueldos: [Idfabrica],[sueldo],[Fecha]
Pagosextra; [Idfabrica],[Pagos],[fecha]

Supongamos los siguientes datos:

Fabricas: 1 A; 2 B; 3 C
Sueldos: 1 100 31/01/08; 2 200 31/01/08; 3 300 31/01/08
Pagosextra: 1 10 15/01/08; 1 15 18/01/08; 2 20 19/02/08

Necesito una consulta en la que al introducir [fecha desde]=01/01/08 y [fecha hasta]=31/01/08 me devuelva la suma de ambos conceptos(sueldos y pagos extra) para cada fábrica, es decir:

1 A 125
2 B 200
3 C 300

Espero haberme explicado bien.
Agradecidísmo de antemano.
  #2 (permalink)  
Antiguo 24/01/2008, 13:12
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Re: Suma de datos de diferentes tablas

Como con cualquier consulta, primero debes completar la parte relacional, y después te preocupas por como mostrar los datos. O divide y vencerás.
En este caso, lo lógico es que primero obtengas las sumas de cada concepto. Aplicando los filtros y agrupando en cada subconsulta, puede ser una opción. No sé que motor de base de datos estás usando, y falta que proporciones más información como si acaso existen registros en Pagosextra para cada fabrica o no, o si la fecha final es inclusiva o exclusiva pero está es la solución más general que puedo darte:

Código:
SELECT      f.Idfabrica,
            f.Nombre,
            (ISNULL(s.sueldo, 0) + ISNULL(pe.pagos, 0)) AS Total
FROM        Fabricas AS f
LEFT JOIN   (
                SELECT      Idfabrica,
                            SUM(sueldo) AS sueldo
                FROM        Sueldos
                WHERE       Fecha >= '20080101' AND Fecha < '20080131'
                GROUP BY    Idfabrica
            ) AS s
            ON s.Idfabrica = f.Idfabrica
LEFT JOIN   (
                SELECT      Idfabrica,
                            SUM(pagos) AS pagos
                FROM        Pagosextra
                WHERE       Fecha >= '20080101' AND Fecha < '20080131'
                GROUP BY    Idfabrica
            ) AS pe
            ON pe.Idfabrica = f.Idfabrica
  #3 (permalink)  
Antiguo 26/01/2008, 13:36
 
Fecha de Ingreso: diciembre-2007
Mensajes: 6
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Suma de datos de diferentes tablas

Me ha funcionado a la perfección.

Magnífico!

Gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:07.