Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/11/2010, 07:49
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Ayudita con un query

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
  1. $tmpSQL = "SELECT * FROM `datagroups` dg "
  2.          ."LEFT JOIN `datas` d ON d.`datagroupid` = dg.`iddatagroup` "
  3.          ."LEFT JOIN `categories` c ON c.`idcategory` = d.`categoryid` "
  4.          ."WHERE c.`code` IN (";
  5. for ($i = 0; $i < $total_cat; $i++) {
  6.      if ($i != 0)  $tmpSQL .= ",";
  7.      $tmpSQL .="'" . trim($_POST['codecat_' . $i]) . "'";
  8. }
  9.  
  10. $tmpSQL .= ") ORDER BY `iddatagroup`,`idcategory`;";

La sentecia construida tiene que tener este aspecto


Código MySQL:
Ver original
  1. SELECT * FROM `datagroups` dg
  2.           LEFT JOIN `datas` d ON d.`datagroupid` = dg.`iddatagroup`
  3.           LEFT JOIN `categories` c ON c.`idcategory` = d.`categoryid`
  4.           WHERE c.`code` IN ('codecat_1','codecat_2',....)
  5. ORDER BY `iddatagroup`,`idcategory`;

Algo mas ràpida deberia ser...

Quim