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?