Also ich würde hergehen, und mir zu jeder Kategorie die FAQ-Einträge dazujoinen...
also:
SQL-Code:
SELECT c.*, f.*
FROM Category c
LEFT JOIN FAQ f
ON f.CatdId = c.ID
ORDER BY c.PARENTID DESC, c.DESCRIPTION, f.HEADER
Damit hast Du alle Daten sortiert nach Ebenen in einem Dataset.
Das heisst, Du brauchst da nix rekursiv zu machen, und Du brauchst vor allem nicht für jede Ebene ein Statement abzufeuern.
Du läufst einmal durch das Dataset durch, legst pro Eintrag einen Node an (wenn es den Parent noch nicht gibt legst Du den neuen Node in einem temporären Array ab und hängst ihn dann ein, sobald Du den Parent angelegt hast). Du hast auch automatisch alle FAQ-Header dazu.