IN seria una opción
WHERE c.`code` IN ();
en el parentesis pones el contenido de $_POST['codecat_X'] se parados por comas
codecat_1,codecat_2,....
el mismo bucle que te sirve para construir las distintas SELECT pero solo para construir el string separado por comas ....
Deberia quedar algo así:
Código PHP:
Ver original$tmpSQL = "SELECT * FROM `datagroups` dg "
."LEFT JOIN `datas` d ON d.`datagroupid` = dg.`iddatagroup` "
."LEFT JOIN `categories` c ON c.`idcategory` = d.`categoryid` "
."WHERE c.`code` IN (";
for ($i = 0; $i < $total_cat; $i++) {
if ($i != 0) $tmpSQL .= ",";
$tmpSQL .="'" . trim($_POST['codecat_' . $i]) . "'"; }
$tmpSQL .= ") ORDER BY `iddatagroup`,`idcategory`;";
La sentecia construida tiene que tener este aspecto
Algo mas ràpida deberia ser...
Quim