webForumDet fria alternativet

case+distinct

2 svar · 153 visningar · startad av doggelito

doggelitoMedlem sedan juni 20003 100 inlägg
#1

tjena, koden ska hämta huvud- och undermenyer.
hittas en huvudmeny som heter 'Mina sidor' så ska denna hamna underst men det funkar ej, vad är fel?
får error:
Order item must appear in the select list if select distinct is specified.

CREATE PROCEDURE dbo.sp_menu 
@Userlevel int,
@Objectid int
AS
SELECT DISTINCT a.Menuid, a.Fullname, a.Link, b.Menuid, b.Submenuid, b.Fullname, b.Link
FROM tblMenu a 
LEFT OUTER JOIN tblMenu b ON a.Menuid = b.Submenuid
INNER JOIN tblMenurelation c ON a.Menuid = c.Menuid
WHERE a.Userlevel <=@Userlevel AND a.Submenuid IS NULL 
AND b.Userlevel <=@Userlevel AND c.Objectid = @Objectid 
GROUP BY  a.Menuid, a.Fullname, a.Link, b.Menuid, b.Submenuid, b.Fullname, b.Link
ORDER BY (Case a.Fullname When 'Mina sidor' Then 1 Else 0 End), b.Fullname Asc
GO
LarsGMedlem sedan dec. 200012 465 inlägg
#2

Varför har du distinct med?

Tänk följande fall

t:

col1 col2
------------
1....!1
2....! 2
1....! 3

select distinct col1 from t order by col2

Hur går det ihop?

doggelitoMedlem sedan juni 20003 100 inlägg
#3

höö, bra fråga.
hade så i ett tidigare skede, sen har det bara följt med utan att jag tänkt på det!

ska genast ändra. :)

Genererad på 364 ms · cache AV · v20260730165559-full.f96bc7eb