webForumDet fria alternativet

order by sortering

10 svar · 312 visningar · startad av Dino

DinoMedlem sedan sep. 20011 918 inlägg
#1

Har en tabell som kan kan se ut som nedan.

id | ... | author
---------------
1 | ... | Elisabeth Hagborg
2 | ... | Berndt Sundsten, Birgitta Stenberg
3 | ... | Lasse Ekholm
4 | ... | Laura Trenter
5 | ... | Paul Vaderlind, Ewa Malmborg, Roger Priddy

I en SELECT finns denna ORDER BY.

...
ORDER BY 
	CASE @SortWay 
		WHEN 'desc' THEN ' '
    	ELSE
   		CASE @SortBy 
			WHEN 'title' THEN A.title
      			WHEN 'author' THEN A.author
			WHEN 'language' THEN A.language
      		ELSE 
			CAST(A.releasedate AS varchar(10))
   		END 
	END,
	CASE  @SortWay 
    		WHEN 'desc' THEN 
		CASE @SortBy 
			WHEN 'title' THEN A.title
      			WHEN 'author' THEN A.author
			WHEN 'language' THEN A.language
      		ELSE 
			CAST(A.releasedate AS varchar(10))
   		END 
	END DESC

Vad jag vill göra nu är att när det skall sorteras efter 'author' så skall det sorteras på efternamnet på den första personen i varje kolumn. Jag vill alltså bara sortera på detta sätt och inte att utdatan skall ändras. Går detta?

LarsGMedlem sedan dec. 200012 465 inlägg
#2

Grundtanken skulle vara att man sorterar på det som står efter första blanka som finns.

substring(author,charindex(' ', author), len(author - charindex(' ', author))

(otestat, off course)

Det är dock inte så enkelt i det generella fallet.

Om en författare heter

Lars Erik Van der graaf

vad sorterar man på då? Helst skulle man då vilja ha namnet uppdelat i två olika kolumner och varje enskild författare lagrad som en egen post i en annan tabell.

DinoMedlem sedan sep. 20011 918 inlägg
#3

Först. Ursäkta att jag springer ifrån datorn när jag precis ställt en fråga.

Får felet "Incorrect syntax near the keyword 'WHEN'." på denna kod, är det så du tänkt.

WHEN 'author' THEN substring(author,charindex(' ', author), len(author - charindex(' ', author))

Kan man inte göra så att om namnet är "Lars-Erik Van der Graaf", dubbelnamn brukar som tur är ha bindestreck:), att man sorterar på det som kommer efter första tomrummet " ".

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Jo, det var något sådant. Jag ser nu att det saknas en högerparentes.

DinoMedlem sedan sep. 20011 918 inlägg
#5

Får nu felet "Syntax error converting the nvarchar value 'Philip Steele' to a column of data type int." :q

@ndersMedlem sedan juni 200026 914 inlägg
#6

Var satte du den saknade högerparentesen?

DinoMedlem sedan sep. 20011 918 inlägg
#7

..., author)))

DinoMedlem sedan sep. 20011 918 inlägg
#8

Jag får ok för koden, men fel när jag kör den.

LarsGMedlem sedan dec. 200012 465 inlägg
#9
WHEN 'author' THEN substring(author,charindex(' ', author), len(author[b])[/b] - charindex(' ', author))

Var lite otydlig med var jag menade att parentesen saknades.

DinoMedlem sedan sep. 20011 918 inlägg
#10

Får detta igen.

Dino skrev:

"Incorrect syntax near the keyword 'WHEN'."

DinoMedlem sedan sep. 20011 918 inlägg
#11

Sorry, hade visst glömt kvar lite kod. Allt funkar hur fint som helst nu. Tackar så mycket. :)

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