erkaMedlem sedan dec. 19996 522 inlägg Hej
Jag har idag en sqlfråga som ser ut på följande sätt
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,ParentMenuItemId
@menuId innehåller en integer som skickas in. Som det är nu sorteras menyerna så att om en meny har något ParentMenuItemId kommer den ut efter den menyn med idt som står i ParentMenuItemId. Går det via sql få så att den sortera på bokstavsordning, alltså att den först sorterar alla menyer med ParentMenuItemId = 0 i bokstavsordning och sedan undermenyerna under respektive meny med idt i ParentMenuItemId.
LarsGMedlem sedan dec. 200012 464 inlägg Om jag nu har förstått rätt
SELECT Pk_MenuItemId, Fk_MenuId, NavigateUrl, NavigateText, ParentMenuItemId ,
case when parentMenuId = 0 then <nameOfMenuItem>
else (select <nameOfMenuItem> from PageMenuItems
where Fk_MenuId = @menuId
and Pk_MenuItemId = pm.parentMenuItemId) as n
FROM PageMenuItems pm
WHERE Fk_MenuId = @menuId
Order by n,ParentMenuItemId
principiellt (ur SQL-synpunkt) så går det att stoppa in den case som nu ligger i select-listan direkt i order by men jag har för mig att sql server inte blir så förtjust då.
erkaMedlem sedan dec. 19996 522 inlägg Tack, får dock incorrect syntax near the keyword 'AS'. Vad jag vill göra är att hämta alla där ParentMenuItemId = 0 (med ett visst Fk_MenuId) efter bokstavsordning, direkt under varje med ParentMenuItemId = 0 ska det komma de som har samma ParentMenuItemId som "den jag är pås Pk_MenuItemId.
LarsGMedlem sedan dec. 200012 464 inlägg Glömde ett end efter case
case when parentMenuId = 0 then <nameOfMenuItem>
else (select <nameOfMenuItem> from PageMenuItems
where Fk_MenuId = @menuId
and Pk_MenuItemId = pm.parentMenuItemId) end as n
erkaMedlem sedan dec. 19996 522 inlägg Det fungerade, tror jag hajjar hur det fungerar nu också, stort tack LarsG, ännu en gång :) Trevlig fortsättning på kvällen