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.
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å.
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.
case when parentMenuId = 0 then <nameOfMenuItem>
else (select <nameOfMenuItem> from PageMenuItems
where Fk_MenuId = @menuId
and Pk_MenuItemId = pm.parentMenuItemId) end as n