Ottimizzazione query vista Fatture di acquisto

This commit is contained in:
Pek5892 2022-11-22 17:38:20 +01:00
parent f227b7cb99
commit 421a893491
1 changed files with 68 additions and 1 deletions

View File

@ -416,3 +416,70 @@ GROUP BY
`descrizione`, `id`
HAVING
2 = 2" WHERE `name` = 'Pagamenti';
-- Ottimizzazione query vista Fatture di acquisto
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'banche.descrizione' WHERE `zz_modules`.`name` = 'Fatture di acquisto' AND `zz_views`.`name` = 'Banca';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'conti.descrizione' WHERE `zz_modules`.`name` = 'Fatture di acquisto' AND `zz_views`.`name` = 'Conto';
UPDATE `zz_modules` SET `options` = "SELECT
|select|
FROM
`co_documenti`
LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN `co_ritenuta_contributi` ON `co_documenti`.`id_ritenuta_contributi` = `co_ritenuta_contributi`.`id`
LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`
LEFT JOIN (SELECT co_banche.id, CONCAT(`nome`, ' - ', `iban`) AS descrizione FROM `co_banche`) AS banche ON `banche`.`id` = `co_documenti`.`id_banca_azienda`
LEFT JOIN (SELECT iddocumento, CONCAT(co_pianodeiconti3.descrizione) AS descrizione FROM co_righe_documenti INNER JOIN co_pianodeiconti3 ON co_pianodeiconti3.id = co_righe_documenti.idconto) AS conti ON conti.iddocumento = co_documenti.id
LEFT JOIN(
SELECT `iddocumento`,
SUM(`subtotale` - `sconto`) AS `totale_imponibile`,
SUM(`iva`) AS `iva`
FROM
`co_righe_documenti`
GROUP BY
`iddocumento`
) AS righe
ON
`co_documenti`.`id` = `righe`.`iddocumento`
LEFT JOIN(
SELECT COUNT(`d`.`id`) AS `conteggio`,
IF(
`d`.`numero_esterno` = '',
`d`.`numero`,
`d`.`numero_esterno`
) AS `numero_documento`,
`d`.`idanagrafica` AS `anagrafica`,
`id_segment`
FROM
`co_documenti` AS `d`
LEFT JOIN `co_tipidocumento` AS `d_tipo`
ON
`d`.`idtipodocumento` = `d_tipo`.`id`
WHERE
1 = 1 AND `d_tipo`.`dir` = 'uscita' AND(
'|period_start|' <= `d`.`data` AND '|period_end|' >= `d`.`data` OR '|period_start|' <= `d`.`data_competenza` AND '|period_end|' >= `d`.`data_competenza`
)
GROUP BY
`id_segment`,
`numero_documento`,
`d`.`idanagrafica`
) AS `d`
ON
(
`d`.`numero_documento` = IF(
`co_documenti`.`numero_esterno` = '',
`co_documenti`.`numero`,
`co_documenti`.`numero_esterno`
) AND `d`.`anagrafica` = `co_documenti`.`idanagrafica` AND `d`.`id_segment` = `co_documenti`.`id_segment`
)
WHERE
1=1
AND
`dir` = 'uscita' |segment(`co_documenti`.`id_segment`)||date_period(custom, '|period_start|' <= `co_documenti`.`data` AND '|period_end|' >= `co_documenti`.`data`, '|period_start|' <= `co_documenti`.`data_competenza` AND '|period_end|' >= `co_documenti`.`data_competenza` )|
HAVING
2=2
ORDER BY
`co_documenti`.`data` DESC,
CAST(IF(`co_documenti`.`numero` = '', `co_documenti`.`numero_esterno`, `co_documenti`.`numero`) AS UNSIGNED) DESC" WHERE `name` = 'Fatture di acquisto';