Ver Mensaje Individual
  #7 (permalink)  
Antiguo 29/01/2013, 15:25
kryta
 
Fecha de Ingreso: septiembre-2009
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Query lenta....

Cita:
Iniciado por jurena Ver Mensaje
No sé si te habré entendido bien todo y lo que quieres es la suma de todas las líneas sean de pedidos con destino cliente o líneas con destino stock. No he probado nada y la consulta es solo es a título orientativo. Tampoco sé si será lo más eficiente hacer el where y el group by dentro de los elementos del UNION ALL o hacerlo solo fuera. Pero primero probamos la consulta para ver si da lo que quieres y luego hacemos pruebas para hacerla más eficiente.
Código MySQL:
Ver original
  1.     pt.id_prov_treb,
  2.    pt.nom,
  3.    coalesce(pt.fac,0),
  4.    pt.tipus_prov_treb,
  5.    SUM(T1.tot) TOTAL
  6. FROM proveidors_treballadors pt
  7.    INNER JOIN  
  8.       ((SELECT
  9.           (ca.quantitat * ca.multiplicatiu) tot,
  10.            a.id_prov_treb,
  11.            a.tipus_prov_treb
  12.          FROM albarans a
  13.             INNER JOIN comandes_albarans_families ca ON a.id_albara = ca.id_albar
  14.          WHERE a.tipus_prov_treb = 'proveidor'
  15.            GROUP BY a.id_prov_treb )
  16.       UNION ALL
  17.            (SELECT
  18.                (af.quantitat * af.multiplicatiu),
  19.                 a.id_prov_treb,
  20.                 a.tipus_prov_treb
  21.              FROM albarans a
  22.                   INNER JOIN albarans_families af ON a.id_albara = af.id_albara
  23.                      WHERE a.tipus_prov_treb = 'proveidor'
  24.                      GROUP BY a.id_prov_treb ))T1
  25. ON (pt.id_prov_treb = T1.id_prov_treb AND pt.tipus_prov_treb = T1.tipus_prov_treb)
  26.     GROUP BY pt.id_prov_treb, pt.tipus_prov_treb
Hola Jurena.

Mírate la consulta que he posteado después de tu comentario, creo que en la tuya el group by se debería hacer sobre id_prov_treb y tipus_prov_treb que es la clave foránea y el índice, me refiero al group by de las interiores.... no se.... lo miro.

Gracias, voy a probar.

Saludos