devo creare un catalogo che ha n sottocataloghi e ogni sottocatalogo può avere altri sottocataloghi

tabella categoria = IDcategoria,nome,padre
tabella articoli = IDarticolo,IDcategoria,nome

prendo ID del catalogo dal URL, a questo punto faccio una select e guardo se questo catalogo ha sei sottocataloghi, se li ha (recordcount>0) allora pubblico tutti i sottocataloghi, se non li ha faccio una select nella tabella articoli con IDcatalogo

Il problema è che io vorrei in alto un menu formato tipo questo

catalogo>sottocatalogo>sottosottocatalogo

a seconda di che punto mi trovo con la navigazione.
Per fare una cosa del genere ho fatto così, ma credo che ci sian cose più funzionali.

praticamente ho fatto un ciclo

i=0
Dim array_categoria(10)
padre=100
numero_categoria = Request.QueryString("IDcategoria")
Do while padre <> 0
Set menu = Server.CreateObject("ADODB.Recordset")

sql = "SELECT * FROM categorie where IDcategoria=" &numero_categoria

menu.Open sql, conn ,3,3

padre=menu("padre")
numero_categoria = menu("padre")
response.Write(menu("nome"))
i=i+1
menu.Close
set menu = Nothing
loop

E poi dall'array a ritroso mi faccio il menu. Solo che la vedo una cosa ingarbugliata. Sicuramente c'è un metodo per far prima, ma al momento non mi viene a mente.