Dentro de la estructura de datos de mi proyecto tengo las siguientes tablas:
datagroups
- iddatagroup, int
- datagroup, varchar(50)
- year, int
data
- iddata, int
- value, float
- datagroupid, int
- categoryid, int
categories
- idcategory, int
- category, varchar(30)
- code, varchar(5)
Un "datagroup" tiene muchos "data" y cada "data" pertenece a una "category".
En un formulario se muestra una lista de checkboxes, cada uno de los cuales devuelve una categoría, por lo que al hacer el submit tengo la lista de las categorías que quiere el cliente.
¿Cómo hacer un select que cargue la información sólo de las categorías seleccionadas?
Actualmente tengo esto, pero es muy lento cuando selecciono más de 10 categorías:
Código PHP:
for ($i = 0; $i < $total_cat; $i++) {
if ($i != 0)
$tmpSQL .= " UNION ";
$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` = '" . trim($_POST['codecat_' . $i]) . "')";
}
$tmpSQL .= " ORDER BY `iddatagroup`,`idcategory`";
Alguna sugerencia?
Saludos!!!!