Cluster, tiene unas modificaciones y me parece más clara, lo que hice yo es crear todo un árbol, en un principio (cuando la página se carga), se despliegan solo las categorías de nivel 0, y si las cliqueo, de van desplegando sus subcategorías, es una mezcla de php con javascript. Aquí posteo algo muy sencillo para tomar como referencia, las tablas las pueden ver en el link que posteó Cluster en este tema. NaughtyFer, que tu motor de bd sea oracle en este caso no importa, ya que la query es compatible con oracle (como se sabe mucho más completo que mysql, jeje, es lo que se de oído).
Código PHP:
function display_categories($parent,$level) {
$sql="SELECT categories.CatId, categories.CatParentId,catlang.CatLangName FROM categories
INNER JOIN catlang ON categories.CatId = catlang.CatId
WHERE LangId=1 AND categories.CatParentId ='".$parent."'";
$result = mysql_query($sql)or die("6 ".mysql_error());
While($row=mysql_fetch_array($result)) {
if($row['CatParentId']>0){
print "$level>>";
}
print " $row[CatLangName]<br>";
display_categories($row['CatId'], $row['CatLangName']);
}
}
display_categories('',0);
Ratamaster