Buenas gente,
Hacía bastante que no me pasaba por el foro y os saludo de nuevo :)
Os comento, porque no se si lo estoy haciendo del todo correcto o de la manera más eficiente, es un poco complejo de explicar:
La query en cuestión es la siguiente:
Código:
select proveidors_treballadors.id_prov_treb, nom, coalesce(fac,0) from proveidors_treballadors
left join (select id_prov_treb, ROUND((sum(materials+stock)),2) as fac from albarans
left join (select id_albara, sum(quantitat*multiplicatiu) as materials from comandes_albarans_families group by id_albara)
T1 on (albarans.id_albara=T1.id_albara)
left join (select id_albara, sum(quantitat*multiplicatiu) as stock from albarans_families group by id_albara)
T2 on (albarans.id_albara=T2.id_albara)
group by id_prov_treb)
T3 on (proveidors_treballadors.id_prov_treb=T3.id_prov_treb)
where tipus_prov_treb = 'proveidor';
Tarda unos 33.1319 segundos :(
El Explain es el siguiente:
El diseño de las tablas indicadas, en amarillo:
Cualquier ayuda es bienvenida. No se porqué hice el diseño en catalán pero bueno....
Gracias y saludos.