webForumDet fria alternativet

Ta reda på närmsta posten uppe och nere?

Databaser & SQL

3 svar · 494 visningar · startad av Travoni

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

Tabellen ser ut som följer:

[B]Id | Namn | kundId[/B]
1 | Kalle | 199
2 | Olle  | 203
3 | Arne | 209

Och är alltid sorterad på "kundid",
Om jag nu vill jag veta vilket id som ligger ovanför och under ex. id 2
Hur gör jag då?

Medlem sedan juni 200032 967 inlägg
#2

Exempelvis:

select top 1 id, 'ovanför' as foo from tabell where id < 2 order by id desc
union
select top 1 id, 'nedanför' from tabell where id > 2 order by id

edit: glömde en liten väsentlig del - begränsandet. Byt till limit om det är mysql såklart.

Medlem sedan okt. 20041 556 inlägg
#3

Härligt,
och i mysql blir det:

(select id, 'ovanför' foo from tabell where id < 2 order by id desc limit 1) 
UNION
(select id, 'nedanför' from tabell where id > 2 order by id limit 1)

Tack @anders!
/R

Medlem sedan okt. 20041 556 inlägg
#4

...eller, det förutsätter att id'na ligger i ordning vilket de inte gör.
Det enda som ligger i ordning är "kundId".
Men något sådant här kanske:

(select id, 'ovanför' foo from tabell where kundId < (select kundId from tabell WHERE id = 2) order by kundid desc limit 1) 
UNION
(select id, 'nedanför' from tabell where kundId > (select kundId from tabell WHERE id = 2) order by kundid limit 1)

Kanske går att göra en annan sql för det?

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)