Cómo hago una suma

Tengo 2 tablas, necesito hacer un SUM(CAMPO) pero con la siguiente condición
SELECT SUM(T1.CAMPO)
FROM table1 T1, table2 T2
WHERE T1.Fecha BETWEEN T2.FechaInicio AND T2.FechaFin
Cuando realizo la consulta me retorna mucha más información de la que debería.
Respuesta
1
Porque te falta poner al condición de unión de las tablas que relacionas. Lo que te esta haciendo es un producto cartesiano.
SELECT SUM(T1.CAMPO)
FROM table1 T1, table2 T2
WHERE T1.Fecha BETWEEN T2.FechaInicio AND T2.FechaFin
AND T1.campoencomun=T2.campoencomun;
Las tablas tendrán uno o más campos en común, que suelen ser campos clave(primary key) en una tabla y clave secundaria en la otra(foreign key)
suerte ;)
Hola,
Aún así me estaba trayendo más valores de los que debería. Gracias.
Acá una opción que encontré:
    SELECT SUM(P.Dias) AS 'SUMA'
    FROM (SELECT T1.IdUsu, T2.IdPro, T1.Dias, T1.FechaAct
          FROM tReporteActividad T1, tbResumenProyectos T2
          WHERE T1.IdPro = T2.IdPro AND T2.IdPro = @IdPro
                AND T1.FechaAct BETWEEN T2.FechaInicio AND T2.FechaFin
          GROUP BY T1.IdUsu, T2.IdPro, T1.Dias, T1.FechaAct
          ) T
    JOIN tUsuarios Usu ON P.IdUsu = Usu.IdUsu
    GROUP BY P.IdPro

1 respuesta más de otro experto

Respuesta
1
Me parece que deberías relacionar la t1 con la t2.
Mi consejo ante las sumas es el siguiente. HAz la select para que salgan todos los registros que quieras sumar. Una vez lo tengas sustituyes los campos por el sum(--)
Pero realmente das poca información, si no te aclaras mándame más detalle y lo veo
Hola,
Gracias por el consejo.
Acá dejo una manera que funciona perfectamente, es usando un SUBQUERY:
    select sum(p.dias) as 'suma'
    from (select t1.idusu, t2.idpro, t1.dias, t1.fechaact
          from treporteactividad t1, tbresumenproyectos t2
          where t1.idpro = t2.idpro and t2.idpro = @idpro
                and t1.fechaact between t2.fechainicio and t2.fechafin
          group by t1.idusu, t2.idpro, t1.dias, t1.fechaact
          ) t
    join tusuarios usu on p.idusu = usu.idusu
    group by p.idpro

Nota: todo el sql en minúscula ya que decía que tenía demasiadas mayúsculas...
Ok, perfecto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas