Aaaahh, ora ho capito.
Tu dici che a seconda di quello che ti arriva devi includere campi che magari non fanno parte delle stesse tabelle...
Secondo me potresti fare questo, in sostanza tu devi scrivere sia una from che una where (non so se anche i campi da restituire debbano variare).
Tu parti dividendo in tre tronconi:
Es.
$select="a.id,a.cognome,b.nome ";
$from="from utente b ";
$where="where a.valid=1 "; (ho messo valid ma potresti mettere qualsiasi cosa, anche 1 e basta.
Se ad esempio hai due altre tabelle, es. categoria e indirizzo, ti crei una variabile "bittario"
$varbit=1; (ovvero 2^0, si presuppone che categoria sia 2 e indirizzo 4)
A mano a mano che analizzi i campi aggiungi alla where e alla select se serve, es.
Codice PHP:
if(trim($_REQUEST["categoria"])!=""){
$where.=" and b.categoria='".trim($_REQUEST["categoria"])."' ";
$select.=",b.categoria"; //(se serve aggiungerla)
$varbit=$varbit|2;
}
Al termine vai a ritoccare la from utilizzando $varbit:
Codice PHP:
if($varbit & 2)
$from.=" inner join categoria b on a.idcategoria=b.idcategoria ";
if($varbit & 4)
$from.=" inner join indirizzo c on a.idindirizzo=c.idindirizzo ";
In questo modo costruisci un pezzo alla volta la tua select, fammi sapere se ti è stato d'aiuto