erkaMedlem sedan dec. 19994 597 inlägg
Tjo
Sitter och ska bygga en liten databasdriven meny och har byggt den av två tabeller Menu och MenuItem
MenuItem
Pk_mnuItemId (räknare)
Fk_mnuId (fk till tabellen Menu)
ParentMnuItemId (default 0)
NavigateURL
NavigateText
NavigateTarget
Menu
Pk_mnuId(räknare)
MnuTitle
MnuDesc
ParentMnuItemId menar att det är en submeny till något annat MenuItem, vad jag vill hämta ut är följande, låt oss säga att jag ska hämta ut menyn med Pk_MenuId = 1. Då vill jag först hämta ut alla menuItem som hör till den menyn, har de något annat än 0 i ParentMnuItemId ska den skrivas ut under det menuItem som det hör till.
SELECT Menu.MenuTitle,Menu.MenuDescription, Menu.Pk_MenuId, MenuItems.Pk_MenuItemId, MenuItems.ParentMenuItemId, MenuItems.NavigateUrl,
MenuItems.NavigateText FROM MenuItems INNER JOIN Menu ON MenuItems.Fk_MenuId = Menu.Pk_MenuId
ORDER BY NavigateText
Misstänker att jag måste använda mig av någon sorts case, men hur? Tacksam
OveRRidEMedlem sedan feb. 20018 509 inlägg
Skall menyn begränsa sig till två nivåer? Isåfall räcker det med en SELECT och en rekursiv INNER JOIN (?), plus lite kontroller i koden, så har du din meny.
erkaMedlem sedan dec. 19994 597 inlägg
Tack jajjdan men... ;) Vet ännu inte om den kommer att begränsa sig till två nivåer, men jag antar det. Jag vet att det går att få ut med ren sql utan kontroller i koden det är det jag är ute efter
OveRRidEMedlem sedan feb. 20018 509 inlägg
erka skrev:
Jag vet att det går att få ut med ren sql utan kontroller i koden det är det jag är ute efter
Nja, hur då? Alla menyalternativ blir ju likadana precis hur du än gör. Du måste väl skilja på dem i koden genom att kontrollera deras parentid, annars vet du ju inte vilka som är subalternativ eller inte?
erkaMedlem sedan dec. 19994 597 inlägg
Ja i gränssnittet måste jag kontrollera om det är en menyitem till ett menyitem så att säga, men vad jag vill få ut är ju dem i rätt ordning
exempelvis
MenyItem1
MenyItem2
MenyItem3, sub till MenyItem2
MenyItem4, sub till MenyItem2
MenyItem5
MenyItem6
MenyItem7, sub till MenyItem6
MenyItem8, sub till MenyItem6
Där först alla MenyItem sorteras på NavigateText och sen sorteras alla sub på NavigateText
erkaMedlem sedan dec. 19994 597 inlägg
Löste det genom
sqlQuery = "SELECT Pk_MenuItemId, Fk_MenuId, NavigateUrl, NavigateText, ParentMenuItemId FROM PageMenuItems WHERE Fk_MenuId = @menuId order by case when ParentMenuItemId = 0 then Pk_MenuItemId else ParentMenuItemId end,NavigateText ,ParentMenuItemId";