webForumDet fria alternativet

order by sortering

Databaser & SQLur Databashanterare & SQL

10 svar · 312 visningar · startad av Dino

Medlem sedan sep. 20011 914 inlägg
Frågan#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?

Medlem sedan dec. 200012 464 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.

Medlem sedan sep. 20011 914 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 " ".

Medlem sedan dec. 200012 464 inlägg
#4

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

Medlem sedan sep. 20011 914 inlägg
#5

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

Medlem sedan juni 200032 967 inlägg
#6

Var satte du den saknade högerparentesen?

Medlem sedan sep. 20011 914 inlägg
#7

..., author)))

Medlem sedan sep. 20011 914 inlägg
#8

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

Medlem sedan dec. 200012 464 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.

Medlem sedan sep. 20011 914 inlägg
#10

Får detta igen.

Dino skrev:

"Incorrect syntax near the keyword 'WHEN'."

Medlem sedan sep. 20011 914 inlägg
#11

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

131 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)