Antes que nada gracias por estar ahi!.
Siempre encuentro las respuestas que necesito en este foro.
Ahora..
Como puedo hacer para optimizar esta consulta?
Necesito hacer unos joins a otras tablas pero me da el error:
[Err] 1116 - Too many tables; MySQL can only use 61 tables in a join
Aca, la consulta:
SELECT
DATE_FORMAT(a.deadline,'%Y-%m') as YM
,ROUND( SUM(DISTINCT b.volume * c.rate * d.cotiz ) , 2 ) + IF (i.volume is not null, ROUND( (i.volume * j.rate_dtp * k.cotiz), 2 ),0) AS total_pesos
, IF( rt.id_rate_tr IS NOT NULL, ROUND( SUM(DISTINCT ft.volume * rt.rate_tr * mtr.cotiz ) , 2 ) ,0)
+ IF( re.id_rate_ed IS NOT NULL, ROUND( SUM(DISTINCT pe.volume * re.rate_ed
+ IF( RLOC.id_rate_loc IS NOT NULL, ROUND( SUM(DISTINCT PLOC.volume * RLOC.rate_loc * MLOC.cotiz ) , 2 ), 0)
+ IF( REP.id_rate_edp IS NOT NULL, ROUND( SUM(DISTINCT PEP.volume * REP.rate_edp * MEP.cotiz ) , 2 ), 0)
+ IF( rp.id_rate_proof IS NOT NULL, ROUND( SUM(DISTINCT pp.volume * rp.rate_proof * mproof.cotiz ) , 2 ), 0)
+ IF( rd.id_rate_dtpier IS NOT NULL, ROUND( SUM(DISTINCT pd.volume * rd.rate_dtpier * md.cotiz ) , 2 ), 0)
+ IF( rpd.id_rate_pdtpier IS NOT NULL, ROUND( SUM(DISTINCT ppd.volume * rpd.rate_pdtpier * mpd.cotiz ) , 2 ), 0) as total_pagado
FROM projects a
INNER JOIN fact_volumes_rates b ON a.id_project = b.id_project
INNER JOIN rates c ON b.id_rate = c.id_rate
INNER JOIN monedas d ON c.id_moneda = d.id_moneda
INNER JOIN rates_types_rates rtr ON rtr.id_type_rate = c.id_type_rate
INNER JOIN projects_status pst ON pst.id_status = a.id_status
LEFT JOIN projects_source_target st ON st.id_source_target = a.id_source_target
LEFT JOIN clients cl ON a.id_client=cl.id_client
LEFT JOIN users upm ON upm.id_user=a.id_pm
LEFT JOIN teams_users tupm on tupm.id_user=upm.id_user
LEFT JOIN teams tpm ON tpm.id_team=tupm.id_team
LEFT JOIN projects_dtps i ON a.id_project = i.id_project
LEFT JOIN rates_dtps j
USING ( id_rate_dtp )
LEFT JOIN monedas k ON j.id_moneda = k.id_moneda
LEFT JOIN projects_fech_ent l ON l.id_project = a.id_project
LEFT JOIN files fl on fl.id_project=a.id_project
LEFT JOIN files_trans ft ON ft.id_file=fl.id_file
LEFT JOIN rates_trans rt ON rt.id_rate_tr=ft.id_rate_tr
LEFT JOIN monedas mtr ON mtr.id_moneda=rt.id_moneda
LEFT JOIN rates_types_rates rtrtr ON rtrtr.id_type_rate=rt.id_type_rate
LEFT JOIN users utr ON utr.id_user=ft.id_trans
LEFT JOIN teams_users tutr on tutr.id_user=utr.id_user
LEFT JOIN teams ttr ON ttr.id_team=tutr.id_team
LEFT JOIN projects_editors pe ON pe.id_project=a.id_project
LEFT JOIN rates_eds re ON re.id_rate_ed=pe.id_rate_ed
LEFT JOIN monedas med ON med.id_moneda=re.id_moneda
LEFT JOIN rates_types_rates rtred ON rtred.id_type_rate=re.id_type_rate
LEFT JOIN users ued ON ued.id_user=pe.id_editor
LEFT JOIN teams_users tued on tued.id_user=ued.id_user
LEFT JOIN teams ted ON ted.id_team=tued.id_team
LEFT JOIN projects_locs PLOC ON PLOC.id_project = a.id_project
LEFT JOIN rates_locs RLOC ON RLOC.id_rate_loc = PLOC.id_rate_loc
LEFT JOIN monedas MLOC ON MLOC.id_moneda = RLOC.id_moneda
LEFT JOIN rates_types_rates RTRLOC ON RTRLOC.id_type_rate = RLOC.id_type_rate
LEFT JOIN users ULOC ON ULOC.id_user = PLOC.id_loc
LEFT JOIN teams_users TULOC on TULOC.id_user = ULOC.id_user
LEFT JOIN teams TLOC ON TLOC.id_team = TULOC.id_team
LEFT JOIN projects_editproofs PEP ON PEP.id_project = a.id_project
LEFT JOIN rates_editproofs REP ON REP.id_rate_edp = PEP.id_rate_edp
LEFT JOIN monedas MEP ON MEP.id_moneda = REP.id_moneda
LEFT JOIN rates_types_rates RTREP ON RTREP.id_type_rate = REP.id_type_rate
LEFT JOIN users UEDP ON UEDP.id_user = PEP.id_editproofer
LEFT JOIN teams_users TUEP on TUEP.id_user = UEDP.id_user
LEFT JOIN teams TEP ON TEP.id_team = TUEP.id_team
LEFT JOIN projects_proof pp ON pp.id_project=a.id_project
LEFT JOIN rates_proof rp ON rp.id_rate_proof=pp.id_rate_proof
LEFT JOIN monedas mproof ON mproof.id_moneda=rp.id_moneda
LEFT JOIN rates_types_rates rtrproof ON rtrproof.id_type_rate=rp.id_type_rate
LEFT JOIN users uproof ON uproof.id_user=pp.id_proof
LEFT JOIN teams_users tuproof on tuproof.id_user=uproof.id_user
LEFT JOIN teams tproof ON tproof.id_team=tuproof.id_team
LEFT JOIN projects_dtpiers pd ON pd.id_project=a.id_project
LEFT JOIN rates_dtpiers rd ON rd.id_rate_dtpier=pd.id_rate_dtpier
LEFT JOIN monedas md ON md.id_moneda=rd.id_moneda
LEFT JOIN rates_types_rates rtrd ON rtrd.id_type_rate=rd.id_type_rate
LEFT JOIN users ud ON ud.id_user=pd.id_dtpier
LEFT JOIN teams_users tud on tud.id_user=ud.id_user
LEFT JOIN teams td ON td.id_team=tud.id_team
LEFT JOIN projects_pdtpiers ppd ON ppd.id_project=a.id_project
LEFT JOIN rates_pdtpiers rpd ON rpd.id_rate_pdtpier=ppd.id_rate_pdtpier
LEFT JOIN monedas mpd ON mpd.id_moneda=rpd.id_moneda
LEFT JOIN rates_types_rates rtrpd ON rtrpd.id_type_rate=rpd.id_type_rate
LEFT JOIN users upd ON upd.id_user=ppd.id_pdtpier
LEFT JOIN teams_users tupd on tupd.id_user=upd.id_user
LEFT JOIN teams tpd ON tpd.id_team=tupd.id_team
WHERE DATE_FORMAT(a.deadline, '%Y-%m') IN ( '2011-11', '2011-12' )
AND cl.id_client_type = '1'
GROUP BY YM
ORDER BY YM