Innanzi tutto, la tua variabile $sotto, contiene un id e quindi un intero e non una risorsa.

$sotto = $row_sotto['id'];

$sotto = mysql_query($query_sotto, $connessione) or die(mysql_error());

cambia nome alla riga che prende il record:

$sottoId = $row_sotto['id'];

Perché usi un do while?