webForumDet fria alternativet

case och subselect?

Databaser & SQL

1 svar · 343 visningar · startad av Obbelix

Medlem sedan okt. 2002257 inlägg
Frågan#1

Hej.

Har en fråga som ser ut som följande:

SELECT p.id,p.player_name,p.team_id,p.player_pos,
(SELECT TOP 1 player_number FROM game_players WHERE player_id = p.id AND game_id<>410 ORDER BY game_id DESC) AS shirtNumber,
(SELECT MIN(player_number) FROM players_numbers WHERE player_id = p.id) AS pNumber FROM players p 
WHERE p.deleted=0 AND p.team_id=93
ORDER BY pNumber ASC, ShirtNumber ASC, p.player_pos ASC, p.player_name ASC

Nu är det så att ibland så finns inte "shirtNumber" utan den returnerar NULL. I de fallen ska pNumber användas.
Går det på nåt sätt direkt i frågan kanske göra en case som kollar om shirtNumber är null, om så ta pNumber.
Kan ju göra detta i asp-koden, men sorteringen blir fel eftersom den nu sorterar på först det ena, sen det andra. Skulle helst vilja ha det så att resultatet av "casen" blev ett alias som man kan sortera efter.
Med på hur jag menar?

Medlem sedan dec. 200012 464 inlägg
#2
coalesce((SELECT TOP 1 player_number FROM game_players WHERE player_id = p.id AND game_id<>410 ORDER BY game_id DESC),pNumber) AS shirtNumber,
265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)