Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/05/2017, 17:48
Avatar de sebandrescc2
sebandrescc2
 
Fecha de Ingreso: diciembre-2012
Mensajes: 45
Antigüedad: 12 años
Puntos: 0
Suma desde 3 tablas con LEFT JOIN

Hola que tal,

Tengo una tabla Proyectos donde voy guardando obras, y a cada obra le corresponden 3 movimientos que los separé en 3 tablas: Pagos pg, Gastos g y Sueldos s.

Bueno, resulta que a la hora sumar pagos asociados a un proyecto me resultó bastante bien

Código MySQL:
Ver original
  1. COALESCE(ROUND(SUM( IF (pg.status_pago='PAGADO', pg.monto_pago, 0) + IF (exc_pago='SI', 0, (pg.monto_pago*0.19)) ),0), NULL, 0) as pago,
  2. p.nom_pro, c.nombre
  3.         FROM (proyectos p,clientes c)
  4.         LEFT JOIN pagos pg
  5.             ON p.id_pro = pg.id_pro
  6.            
  7.         WHERE p.id_cliente = c.id
  8.         GROUP BY p.id_pro, c.id
  9.         ORDER BY p.id_pro DESC



Pero, como necesito obtener en la misma fila los gastos y sueldos, me devuelve valores erróneos con esta consulta

Código MySQL:
Ver original
  1. COALESCE(ROUND(SUM( IF (pg.status_pago='PAGADO', pg.monto_pago, 0) + IF (exc_pago='SI', 0, (pg.monto_pago*0.19)) ),0), NULL, 0) as pago,
  2. COALESCE(ROUND(SUM( IF (g.status_gasto='PAGADO', g.monto_gasto, 0) + IF (exc_gasto='SI', 0, (g.monto_gasto*0.19)) ),0), NULL, 0) as gasto,
  3. COALESCE(ROUND(SUM( IF (s.status_sueldo='PAGADO', s.monto_sueldo, 0)),0),NULL, 0) as sueldo,
  4. p.nom_pro, c.nombre
  5.         FROM (proyectos p,clientes c)
  6.        
  7.         LEFT JOIN pagos pg
  8.             ON p.id_pro = pg.id_pro
  9.            
  10.         LEFT JOIN gastos g
  11.             ON p.id_pro = g.id_pro
  12.            
  13.         LEFT JOIN sueldos s
  14.             ON p.id_pro = s.id_pro
  15.            
  16.         WHERE p.id_cliente = c.id
  17.         GROUP BY p.id_pro, c.id
  18.         ORDER BY p.id_pro DESC



Incluso marque en rojo como uno de ellos cambia, no se por qué?
Que hago mal?. Como dato, todas las tablas están relacionadas con id_pro

Bueno, espero que me puedan ayudar... Gracias !!
__________________
Aquí voy a escribir mi firma