ループ中に2番目のループに問題があります。ループは1回だけなので、2番目のループの最初の行の値しか取得できません。これを理解するのを手伝ってください、私は初心者です。
<ul id="navbar">
<?php
$rel = "SELECT * FROM table1 ORDER BY category";
$sql=$db->query($rel);
while($row = $sql -> fetch_array()){
?>
<li><a href="category.php?id=<?php echo $row['category_id'];?>"><?php echo $row['category'];?></a>
<ul>
<?php
$sel = "SELECT * FROM table2 WHERE category_id=".$row['category_id']." ORDER BY subcategory ASC";
$sql=$db->query($sel);
while($row1 = $sql -> fetch_array()){
?>
<li><a href="subcategory.php?id=<?php echo $row1['subcategory_id'];?>"><?php echo $row1['subcategory'];?></a></li>
<?php }?>
</ul>
</li>
<?php }?>
</ul>