diff --git a/modules/articoli/ajax/search.php b/modules/articoli/ajax/search.php
index 654c9d77e..5e2dd1148 100755
--- a/modules/articoli/ajax/search.php
+++ b/modules/articoli/ajax/search.php
@@ -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.'%');
diff --git a/update/2_11_1.sql b/update/2_11_1.sql
new file mode 100644
index 000000000..89ae9a0e7
--- /dev/null
+++ b/update/2_11_1.sql
@@ -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 ''
'') 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 ''
'')'
+)
+WHERE `name` = 'Articoli';