A parte l'ottimizzazione dipende da come è struturato il DB.
Il problema è che fai #n query in base al risultato della prima...e questo è male, soprattuto perchè non saprai a priori quante query fai.
Puoi fare così:
Per un esepio dell'IN nelle queryCodice PHP:
//1a query
select argomento from tabella
while
{
stampa a video argomento
$argomenti = Argomento + ",";
}
//2a query
select sotto_argomento where argomento in($argomenti)
{
stampa a video i risultati sotto_argomento
}
http://www.w3schools.com/sql/sql_in.asp
Dimenticavo
Potresti anche fare la seconda query semplciemente usando una subquery
select sotto_argomento where argomento in(SELECT Argomenti form tabella where balbla)