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ì:
Codice 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

Per un esepio dell'IN nelle query
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)