Hej! Du har en ganska dålig struktur för det ändamålet. Okej, jag är som sagt novis. Men om jag ändå skulle vilja använda denna strukturen" gör jag det lämpligast i en fråga i Access eller i ASP sidan. Fattade tyvärr inte ditt tips med rekursiva anrop. *sorry* Tack igen för hjälp! Rekursiva frågan går att göra på två sätt. Det här är det enklare men mindre effektiva:Skapa en nästlad menu med flera underkategorier - Hjälp!
Har letat och letat men får inte till det så jag hoppas på något proffs här (är själv nybörjare).
Jag har en tabell i Access med bl.a. följande fält:
PageID (detta är en vanlig räknare)
PageParent (om Null = huvudsida, annars talet på det PageID som aktuell sida ska hamna under)
MenuPosition (Tal - för att kunna sortera menyn)
Mitt problem är att jag skulle vilja få det sorterat i en fråga i Access för att senare kunna använda till en ASP sida och bygga en meny. Dessutom ska det helst gå att sortera på i princip flera underkategorier - i flera steg. Exempel:
PageID=1, PageParent=Null, MenuPosition=1
PageID=4, PageParent=1, MenuPosition=1
PageID=3, PageParent=1, MenuPosition=2
PageID=2, PageParent=Null, MenuPosition=2
PageID=5, PageParent=2, MenuPosition=1
PageID=9, PageParent=5, MenuPosition=1
PageID=8, PageParent=5, MenuPosition=2
PageID=7, PageParent=2, MenuPosition=2
PageID=6, PageParent=Null, MenuPosition=3
Hoppas ni förstår hur jag menar och kanske tom har en lösning. Tackar på förhand.
Mvh, KristianSv: Skapa en nästlad menu med flera underkategorier - Hjälp!
En av de bättre är "Nested-Set Model of Trees" eller "Modified Preorder Tree Traversal".
Använder du den strukturen du har nu får du nog göra en serie rekursiva anrop.
Typ:
(SELECT ... WHERE PageParent=NULL) AS A1
Och sen hämta ut alla:
SELECT ... WHERE PageParent IN A1
..
tills du inte har några kvar.
EDIT: Ändrade till rätt namnSv:Skapa en nästlad menu med flera underkategorier - Hjälp!
Sv: Skapa en nästlad menu med flera underkategorier - Hjälp!
1. Välj ut alla topp-noder.
SELECT PageID FROM Pages WHERE PageParent=NULL
2. För varje topp-nod som du får ut av frågan oven, skriv ut informationen om den, ta ut dess id, kalla id:et X, och kör sen:
SELECT PageID FROM Pages WHERE PageParent=X
3. För varje nod i vad du får ut av det gör du samma sak, typ, i pseudokod:
PrintSubTree(RootID){
print("ID:" & RootID);
array = sql("SELECT PageID FROM Pages WHERE PageParent=" & RootID) ;
for(each element in array)
PrintSubTree(element);
}
Anropas med
PrintSubTree(NULL)
Är du med?