webForumDet fria alternativet

case och subselect?

1 svar · 343 visningar · startad av Obbelix

ObbelixMedlem sedan okt. 2002257 inlägg
#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?

LarsGMedlem sedan dec. 200012 465 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,
Genererad på 387 ms · cache AV · v20260730165559-full.f96bc7eb