webForumDet fria alternativet
Logga in / Bli medlem

case+distinct

Databaser & SQL

2 svar · 153 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Trådstart#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
Medlem sedan dec. 200012 464 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?

Medlem sedan juni 20003 076 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. :)

244 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
120 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)