hai ragione.. 
id capitolo paragrafo titoloparagrafo
1 1 1.1 roba dell'altro mondo
2 1 1.1 roba di questo mondo
3 2 2.1 roba di questo pianeta
4 2 2.2 roba di un altro pianeta
5 3 3.1 roba dalla luna
Codice PHP:
//questa select mi seleziona e stampa i paragrafi del capitolo
SELECT * FROM libro WHERE capitolo = '$cap' ORDER BY id ASC
//questa select mi da tutti i capitoli a prescindere
SELECT distinct (capitolo), titoloparagrafo, id FROM libro WHERE titoloparagrafo is not null ORDER BY id ASC
//poi i risultati
do {
if($capitolo == $cap ) { >
<tr>
<td >Capitolo <?php echo $row_Menu['capitolo']; ?></td>
</tr>
<?php do { ?>
<tr>
<td >[url="#<?php echo $row_Menu['id']; ?>"]<?php echo $row_Menu['titoloparagrafo']; ?>[/url]</td>
</tr>
<?php } while ($row_Menu = mysql_fetch_assoc($Menu)); ?>
<?php } else { ?>
<tr>
<td>[url="?cap=<?php echo $row_Capitoli['capitolo']; ?>"]Capitolo <?php echo $row_Capitoli['capitolo']; ?>[/url]</td>
</tr>
<?php } ?>
} while ($row_Capitoli = mysql_fetch_assoc($Capitoli));
l'output:
se $cap = 2
mi stampa:
capitolo 1 - con il link relativo
capitolo 2
roba di questo pianeta
roba di un altro pianeta
capitolo 3 - con il link relativo
capitolo 4 - con il link relativo
invece vorrei stampasse:
capitolo 2
roba di questo pianeta
roba di un altro pianeta
capitolo 1 - con il link relativo
capitolo 3 - con il link relativo
capitolo 4 - con il link relativo
o al massimo con la ripetizione
capitolo 2
roba di questo pianeta
roba di un altro pianeta
capitolo 1 - con il link relativo
capitolo 2 - con il link relativo
capitolo 3 - con il link relativo
capitolo 4 - con il link relativo
se si può fare con una query, ovviamente sarebbe il massimo.. 
grazie della pazienza..