Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion modules/articoli/ajax/search.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
$query .= ', '.$value." AS '".str_replace("'", "\'", $name)."'";
}

$query .= ' FROM `mg_articoli` LEFT JOIN `mg_articoli_lang` ON (`mg_articoli`.`id` = `mg_articoli_lang`.`id_record` AND `mg_articoli_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') LEFT JOIN `mg_prodotti` ON `mg_prodotti`.`id_articolo` = `mg_articoli`.`id` LEFT JOIN (SELECT CASE WHEN COUNT(`mg_articoli_barcode`.`barcode`) <= 2 THEN GROUP_CONCAT(`mg_articoli_barcode`.`barcode` SEPARATOR \',\') ELSE CONCAT((SELECT GROUP_CONCAT(`b1`.`barcode` SEPARATOR \',\') FROM (SELECT `barcode` FROM `mg_articoli_barcode` `b2` WHERE `b2`.`id_articolo` = `mg_articoli_barcode`.`id_articolo` ORDER BY `b2`.`barcode` ASC) `b1`)) END AS `lista`, `mg_articoli_barcode`.`id_articolo` FROM `mg_articoli` LEFT JOIN `mg_articoli_barcode` ON `mg_articoli_barcode`.`id_articolo` = `mg_articoli`.`id` GROUP BY `mg_articoli`.`id`) AS `barcode` ON `barcode`.`id_articolo` = `mg_articoli`.`id` WHERE deleted_at IS NULL AND (1=0 ';
$query .= ' FROM `mg_articoli` LEFT JOIN `mg_articoli_lang` ON (`mg_articoli`.`id` = `mg_articoli_lang`.`id_record` AND `mg_articoli_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') LEFT JOIN `mg_prodotti` ON `mg_prodotti`.`id_articolo` = `mg_articoli`.`id` LEFT JOIN (SELECT CASE WHEN COUNT(`mg_articoli_barcode`.`barcode`) <= 2 THEN GROUP_CONCAT(`mg_articoli_barcode`.`barcode` SEPARATOR \',\') ELSE GROUP_CONCAT(`mg_articoli_barcode`.`barcode` ORDER BY `mg_articoli_barcode`.`barcode` ASC SEPARATOR \',\') END AS `lista`, `mg_articoli_barcode`.`id_articolo` FROM `mg_articoli` LEFT JOIN `mg_articoli_barcode` ON `mg_articoli_barcode`.`id_articolo` = `mg_articoli`.`id` GROUP BY `mg_articoli`.`id`) AS `barcode` ON `barcode`.`id_articolo` = `mg_articoli`.`id` WHERE deleted_at IS NULL AND (1=0 ';

foreach ($fields as $name => $value) {
$query .= ' OR '.$value.' LIKE '.prepare('%'.$term.'%');
Expand Down
15 changes: 15 additions & 0 deletions update/2_11_1.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
-- Corregge la query di listato del modulo Articoli: il sottoquery dei barcode usava una
-- derived table correlata (SELECT ... FROM (SELECT ... FROM `mg_articoli_barcode` `b2`
-- WHERE `b2`.`id_articolo` = `mg_articoli_barcode`.`id_articolo` ...) `b1`), che referenzia il
-- `mg_articoli_barcode` della query esterna dall'interno di un sottoquery in FROM. MariaDB non
-- supporta le lateral/correlated derived table, quindi l'apertura di Magazzino > Articoli falliva
-- con errore 1054 "Unknown column 'mg_articoli_barcode.id_articolo' in 'WHERE'".
-- Il ramo ELSE viene sostituito da un GROUP_CONCAT ordinato: stesso risultato (i barcode
-- dell'articolo, ordinati) e valido sia su MariaDB sia su MySQL.
UPDATE `zz_modules`
SET `options` = REPLACE(
`options`,
'CONCAT((SELECT GROUP_CONCAT(`b1`.`barcode` SEPARATOR ''<br />'') FROM (SELECT `barcode` FROM `mg_articoli_barcode` `b2` WHERE `b2`.`id_articolo` = `mg_articoli_barcode`.`id_articolo` ORDER BY `b2`.`barcode` ASC) `b1`))',
'GROUP_CONCAT(`mg_articoli_barcode`.`barcode` ORDER BY `mg_articoli_barcode`.`barcode` ASC SEPARATOR ''<br />'')'
)
WHERE `name` = 'Articoli';
Loading