Non è facile ma cercherò di essere chiaro nell'esporre il mio problema.
Si tratta di costruire un motore di ricerca.

Ora il motore ha solo un campo di testo il cui valore può essere riferito ad un dato nel database, a discrezione dell'utente.
Per esempio l'utente cerca "tromba" e vuole che tale dato sia riferito allo strumento.
Il motore allora prima seleziona gli strumenti e poi esegue la clausola WHERE per vedere se tra questi vi è lo strumento "tromba".
Chiaramente l'utente può anche cercare "Miles Davis" ed allora non vuole che tale stringa sia riferita allo strumento, ma al musicista: il motore allora agisce di conseguenza selezionando tutti i musicisti e poi confrontandoli attraverso WHERE con la stringa ricercata.

Io vorrei avere un altra stringa di ricerca simile alla prima, perchè ad esempio voglio trovare tutti i cd dove Miles Davis suona le tastiere (orribile bestemmia) ed allora nel primo campo inserisco "Miles Davis" riferito al musicista, nel secondo inserisco "tastiere" riferito allo strumento.
In tal caso il motore dovrebbe prima cercare tra i musicisti se c'è Miles Davis, poi cercare tra gli strumento suonati da Miles se ci sono le tastiere.
Purtroppo per far questo ho bisogno di una prima ricerca, un primo WHERE, una seconda ricerca ed un secondo WHERE. Ma mysql non mi permette di eseguire ulteriori ricerche dopo WHERE, per cui non so come fare ad eseguire la seconda ricerca.

Spero sia abbastanza chiaro il concetto, ma inserisco anche uno stralcio del codice così da capirci meglio.

Codice PHP:
if (!empty($_SESSION['principale'])&&$_SESSION['principale']!="") {
                        switch (
$_SESSION[ricerca]) {
                            case 
"autore":
                            
$query.="INNER JOIN cd_musicisti_autori cd_m_a
                                    ON c.id = cd_m_a.id_cd
                                    INNER JOIN musicisti m
                                    ON cd_m_a.id_musicisti = m.id
                                    WHERE concat(m.nome,' ',m.cognome) LIKE '%
$_SESSION[principale]%' ";
                            break;
                            case 
"musicista":
                            
$query.="INNER JOIN cd_musicisti cd_m
                                    ON c.id = cd_m.id_cd
                                    INNER JOIN musicisti m
                                    ON cd_m.id_musicisti = m.id
                                    WHERE concat(m.nome,' ',m.cognome) LIKE '%
$_SESSION[principale]%' ";
                            break;
                            case 
"strumento":
                            
$query.="INNER JOIN cd_musicisti cd_m
                                    ON c.id = cd_m.id_cd
                                    INNER JOIN musicisti m
                                    ON cd_m.id_musicisti = m.id
                                    INNER JOIN musicisti_strumenti = m_str
                                    ON m.id = m_str.id_musicisti
                                    INNER JOIN strumenti = str
                                    ON str.id = m_str.id_strumenti
                                    WHERE str.strumento LIKE '%
$_SESSION[principale]%' ";
                            break;
                            case 
"traccia":
                            
$query.="INNER JOIN cd_tracce cd_tr
                                    ON c.id = cd_tr.id_cd 
                                    WHERE cd_tr.traccia LIKE '%
$_SESSION[principale]%' ";
                            break;
                            case 
"autore_tracce":
                            
$query.="INNER JOIN cd_tracce cd_tr
                                    ON c.id = cd_tr.id_cd
                                    INNER JOIN tracce_autori_tracce t_a_t
                                    ON cd_tr.id = t_a_t.id_cd_tracce
                                    INNER JOIN autori_tracce au_tr
                                    ON t_a_t.id_autori_tracce = au_tr.id
                                    WHERE concat(au_tr.nome,' ',au_tr.cognome) LIKE '%
$_SESSION[principale]%' ";
                            break;
                            default:
                            
$query.="WHERE $_SESSION[ricerca] LIKE '%$_SESSION[principale]%' ";
                            break;
                        }
    
$unione="AND ";
} else {
    
$unione="WHERE ";
}

if (!empty(
$_SESSION['secondaria'])&&$_SESSION['secondaria']!="") {
                        switch (
$_SESSION[ricerca_secondaria]) {
                            case 
"autore":
                            
$query.="INNER JOIN cd_musicisti_autori cd_m_a
                                    ON c.id = cd_m_a.id_cd
                                    INNER JOIN musicisti m
                                    ON cd_m_a.id_musicisti = m.id
                                    WHERE concat(m.nome,' ',m.cognome) LIKE '%
$_SESSION[secondaria]%' ";
                            break;
                            case 
"musicista":
                            
$query.="INNER JOIN cd_musicisti cd_m
                                    ON c.id = cd_m.id_cd
                                    INNER JOIN musicisti m
                                    ON cd_m.id_musicisti = m.id
                                    WHERE concat(m.nome,' ',m.cognome) LIKE '%
$_SESSION[secondaria]%' ";
                            break;
                            case 
"strumento":
                            
$query.="INNER JOIN cd_musicisti cd_m
                                    ON c.id = cd_m.id_cd
                                    INNER JOIN musicisti m
                                    ON cd_m.id_musicisti = m.id
                                    INNER JOIN musicisti_strumenti = m_str
                                    ON m.id = m_str.id_musicisti
                                    INNER JOIN strumenti = str
                                    ON str.id = m_str.id_strumenti
                                    WHERE str.strumento LIKE '%
$_SESSION[secondaria]%' ";
                            break;
                            case 
"traccia":
                            
$query.="INNER JOIN cd_tracce cd_tr
                                    ON c.id = cd_tr.id_cd 
                                    WHERE cd_tr.traccia LIKE '%
$_SESSION[secondaria]%' ";
                            break;
                            case 
"autore_tracce":
                            
$query.="INNER JOIN cd_tracce cd_tr
                                    ON c.id = cd_tr.id_cd
                                    INNER JOIN tracce_autori_tracce t_a_t
                                    ON cd_tr.id = t_a_t.id_cd_tracce
                                    INNER JOIN autori_tracce au_tr
                                    ON t_a_t.id_autori_tracce = au_tr.id
                                    WHERE concat(au_tr.nome,' ',au_tr.cognome) LIKE '%
$_SESSION[secondaria]%' ";
                            break;
                            default:
                            
$query.="WHERE $_SESSION[ricerca_secondaria] LIKE '%$_SESSION[secondaria]%' ";
                            break;
                        }
    
$unione="AND ";
} else {
    
$unione="WHERE ";

Grazie a chiunque voglia aiutarmi, se non altro per la pazienza d'aver letto questa lunga elucubrazione.