webForumDet fria alternativet

Sortera min select del2

1 svar · 178 visningar · startad av solbulle

solbulleMedlem sedan mars 20015 287 inlägg
#1
SQL = "SELECT  fld_o_title, o.fld_o_id, fld_p_firstname, fld_p_lastname, fld_mt_name, fld_mt_id FROM " &_
" ((tbl_movie_title mt inner join tbl_movie m " &_
"on mt.fld_mt_id = m.fld_m_mtid) " &_
" left outer join " &_
"tbl_occupation o on o.fld_o_id = m.fld_o_id) " &_
" left outer join " &_
"tbl_person p on p.fld_p_id = m.fld_p_id ORDER BY iif(fld_p_lastname is null,1,0), fld_p_lastname, fld_mt_name"

Skulle vilja ha det som så att om fld_o_id är 1 eller 3 skall den kolla om "fld_p_lastname is null" o sortera efter det annars skall den direkt sortera på fld_mt_name.

Jag testade så här men det verkar inte riktigt lira:

ORDER BY iif(fld_p_lastname is null AND o.fld_o_id = 1 OR (fld_p_lastname is null AND o.fld_o_id = 3),1,0), fld_p_lastname, fld_mt_name"
solbulleMedlem sedan mars 20015 287 inlägg
#2

Jag använder mig nu av ett exempel för att åskådliggöra vad jag vill uppnå, med lite andra namn.

Har typ detta i en databas

namn		nr	lag

Kalle		1	Hammarby
Anders		1	Hammarby
Anders		3	Djurgården
Totte		4	Brynäs
Benke			Modo
Robban		2	Leksand
Rickard			AIK

Villa ha dessa i denna ordning:

namn		nr	lag

Anders		3	Djurgården
Anders		1	Hammarby
Kalle		1	Hammarby

Rickard			AIK
Totte		4	Brynäs
Robban		2	Leksand
Benke			Modo

Logiken är den att:

Om nr = 1 eller 3 skall det sorteras på lag i första hand och sen namn i andra hand.
Om inte nr = 1 eller 3 skall det sorteras på lag i första hand och sen namn i andra hand.
Allt detta skall komma efter det första kriteriet. (Se listning)

Nuvarande pryl fungerar så långt som fram till att den gör rätt så långt som fram till att den lägger de med nr 2 eller 4 allra sist sorterade på namn, men jag vill alltså att dessa ska vara "likvärdiga" med de helt utan nr och sorteras först på lag o sen på namn.

Så här är det alltså nu (felaktigt:)

namn		nr	lag

Anders		3	Djurgården
Anders		1	Hammarby
Kalle		1	Hammarby

Robban		2	Leksand	FEL!
Totte		4	Brynäs	FEL!
Rickard			AIK
Benke			Modo

SQL-sats:

ORDER BY iif(namn is null,1,0), namn, lag"

Testat med:

ORDER BY iif((namn is null AND nr = 1) ,1,0), namn, lag"

Samt lite dylika konstruktioner
men det flyttar bara en felaktig rad längst ner.

Jag använder mig nu av diverse If-satser o dyl för att få det hela rätt, men för att "få in" dessa med nr som är fel i sorteringen måste jag väl klara av det i SQL-frågan, eller?

(Suck, saknar aspforumet...)

Red. Tabslag eller mellan slag var ingen hit här.

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