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

[SOLUCIONADO] SUMAR Campos de distintas Tablas

Estas en el tema de SUMAR Campos de distintas Tablas en el foro de Mysql en Foros del Web. Hola a todos como están veran tengo una consulta donde sumos dos campos de distintas tablas pero no se si esa es la forma correcta ...
  #1 (permalink)  
Antiguo 04/05/2016, 12:15
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
SUMAR Campos de distintas Tablas

Hola a todos como están veran tengo una consulta donde sumos dos campos de distintas tablas pero no se si esa es la forma correcta ya que lo montos de suma son altos
Código MySQL:
Ver original
  1. SELECT mtd.jc_metas_fecha,SUM(mtd.jc_metas_monto) AS meta_general,SUM(sg.seg_valor_venta) + SUM(sps.seg_pap_valor_venta)AS venta_real FROM metas mt
  2. LEFT JOIN metas_detalles mtd ON mtd.jc_meta_id = mt.jc_meta_id
  3. LEFT JOIN unidad_negocio und ON und.jc_unidad_negocio_id = mtd.jc_unidad_negocio_id
  4. LEFT JOIN seg_pap sp ON sp.jc_unidad_negocio_id = mtd.jc_unidad_negocio_id AND YEAR(sp.seg_pap_fecha_ultimo_contac) = YEAR(mtd.jc_metas_fecha)
  5. AND MONTH(sp.seg_pap_fecha_ultimo_contac) = MONTH(mtd.jc_metas_fecha) AND sp.jc_unidad_negocio_id = 6
  6. LEFT JOIN seg_pap_servicio sps ON sp.seg_pap_id = sps.seg_pap_id
  7. LEFT JOIN seg_comercial sg ON sg.jc_unidad_negocio_id = mtd.jc_unidad_negocio_id AND sg.jc_unidad_negocio_id IN (5,1)
  8. AND YEAR(sg.seg_fecha_ultimo_contac) = YEAR(mtd.jc_metas_fecha) AND MONTH(sg.seg_fecha_ultimo_contac) = MONTH(mtd.jc_metas_fecha)
  9. WHERE mtd.jc_unidad_negocio_id IN(6,5,1)
  10. GROUP BY YEAR(mtd.jc_metas_fecha),MONTH(mtd.jc_metas_fecha)
  #2 (permalink)  
Antiguo 04/05/2016, 12:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: SUMAR Campos de distintas Tablas

Ok...
¿Has tenido en cuenta que una consulta con tal cantidad de LEFT JOINs puede producir resultado inconsistentes, si devuelve el mismo registro relacionado con mas de una condición?
Los LEFT JOIN deben ser usados con cuidado porque en consultas con múltiples tablas tienen el potencial de generar relaciones en estrella, y eso replica datos en diferentes registros de la tabla de resultados. Esto finalmente podría causar que el mismo dato sse sume más de una vez en determinadas condiciones.

Antes de seguir adelante te recomiendo sacar una muestra del resultado de la query base, sin sumar ni agrupar, y asegurarte de que los datos que sumas no se estén repitiendo. Donde se repitan casos ente registros, es donde la query está siendo mal relacionada:
Código SQL:
Ver original
  1. SELECT
  2.     mtd.jc_metas_fecha,
  3.     mtd.jc_metas_montol,
  4.     sg.seg_valor_venta,
  5.     sps.seg_pap_valor_venta
  6. FROM
  7.     metas mt
  8.         LEFT JOIN
  9.     metas_detalles mtd ON mtd.jc_meta_id = mt.jc_meta_id
  10.         LEFT JOIN
  11.     unidad_negocio und ON und.jc_unidad_negocio_id = mtd.jc_unidad_negocio_id
  12.         LEFT JOIN
  13.     seg_pap sp ON sp.jc_unidad_negocio_id = mtd.jc_unidad_negocio_id
  14.         AND YEAR(sp.seg_pap_fecha_ultimo_contac) = YEAR(mtd.jc_metas_fecha)
  15.         AND MONTH(sp.seg_pap_fecha_ultimo_contac) = MONTH(mtd.jc_metas_fecha)
  16.         AND sp.jc_unidad_negocio_id = 6
  17.         LEFT JOIN
  18.     seg_pap_servicio sps ON sp.seg_pap_id = sps.seg_pap_id
  19.         LEFT JOIN
  20.     seg_comercial sg ON sg.jc_unidad_negocio_id = mtd.jc_unidad_negocio_id
  21.         AND sg.jc_unidad_negocio_id IN (5 , 1)
  22.         AND YEAR(sg.seg_fecha_ultimo_contac) = YEAR(mtd.jc_metas_fecha)
  23.         AND MONTH(sg.seg_fecha_ultimo_contac) = MONTH(mtd.jc_metas_fecha)
  24. WHERE
  25.     mtd.jc_unidad_negocio_id IN (6 , 5, 1)
Y si: TE estoy diciendo que analices el resultado A MANO.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 04/05/2016, 12:30
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: SUMAR Campos de distintas Tablas

Pues esa lo mismo que pense verificar el resultado a mano, tendre en cuenta las condiciones dentro de los LEFT JOIN muchas gracias por tu sugerencia

Etiquetas: campo, campos, distintas, fecha, join, select, tabla, tablas
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 14:02.