veritabanında tek tablo oluştur. (kategori)
katid, katismi, ustkatid
1 , dasd , 0
2 , gsfsdf , 0
3 , hnfg , 1 gibi..
ör:
 $query = 'SELECT a.katismi,a.katid,a.ustkatid,b.katismi AS ustkat FROM kategori a,kategori b WHERE a.ustkatid=b.katid';
$res = mysql_query($query);
while($row = mysql_fetch_assoc($res)):
$array[$row['ustkatid']][$row['ustkat']][$row['katid']]=$row['katismi'];
endwhile;

foreach($array as $ustkatid=>$array2):
  foreach($array2 as $katismi=>$array3):
// buraya ana kategori linki $ustkatid => kategori id , $katismi => kategori adı
# senin istediğin yer
 if($_GET['asdas']==$ustkatid):
  foreach($array3 as $altkatid=>$altkatismi):
   // buraya alt kategori linki $altkatid=> alt kategori id , $altkatismi=> alt kategori adı
  endforeach; endif;

  endforeach;
endforeach;
denemedim hata verir büyük ihtimal
kolay gelsin