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..