webForumDet fria alternativet

Sortera fram rätt rader?

6 svar · 466 visningar · startad av Donatello

DonatelloMedlem sedan jan. 2005108 inlägg
#1

Hej hå...

Har suttit å letat ett tag utan att hitta någon lösning på mitt lilla problem.

Databasexempel:

ID värde1 värde2 värde3
1 456 213 486
2 4564 45 545
3 5 523 1
4 5132 12 58
5 513 531 865
6 488 43 0
7 696 521 85
8 5321 8531 96
9 8524 0 63
10 52 41 991
11 112 358 945
12 54 32 563
13 889 962 453
14 851 33 562
15 428 5321 058

Vill kunna plocka fram en hög om fem rader var som helst ur databasen, exempelvis ID sex till tio. Såg en lösning för läääänge sen, men den har fallit i glömska. Var något i stil med:
"SELECT BOTTOM {antalet poster mellan EOF och ID6} * FROM tabellen (INNER JOIN TOP 5 something like this ORDER BY ID DESC) ORDER BY ID ASC"

Kan någon säga om jag är på rätt spår? :)

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select *
 from t
where id between 6 and 10

Då jag förmodligen missförstår detta så kan du väl förklara lite bättre.

DonatelloMedlem sedan jan. 2005108 inlägg
#3

Problemet med din lösning är att man får ut ID 6-10, inte rad nr 6-10 räknat uppifrån. Tas ex.vis ID 7 och 8 bort får jag ju bara ut tre poster.

Nytt exempel:

ID
1
2
3
7
12
13
14
18
22
23
25
26
28
29
31

Jag har en sida som ska visa annonser på sidor om fem annonser, med den senast införda (nedersta) först. Första sidan blir enkel. SELECT BOTTOM 5... Men sen när jag vill få ut ex.vis ID 23, 22, 18, 14 och 13 för sida två, så strular det till sig.

Hänger du med..?

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Att prata om radnummer och uppifrån eller nerifrån är inte applicerbart för en relationsdatabas. ;)

select top 5 *
from t
where id not in 
  (select top 5 id 
      from t
     order by id desc)
  order by id desc
DonatelloMedlem sedan jan. 2005108 inlägg
#5

Att prata om radnummer och uppifrån eller nerifrån är inte applicerbart för en relationsdatabas.

Har aldrig påstått att jag inte är bakom flötet. ;)
Det där var precis vad jag letade efter. Tack! :)

Dies_IraeMedlem sedan aug. 2001145 inlägg
#6

är inte "SELECT * FROM t LIMIT 6,5" bättre?

@ndersMedlem sedan juni 200032 969 inlägg
#7

Dies_Irae skrev:

är inte "SELECT * FROM t LIMIT 6,5" bättre?

Om det hade varit tal om MySQL kanske det hade varit en fin lösning. :)

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