Avatar billede nikolajdu Nybegynder
04. januar 2006 - 23:24 Der er 9 kommentarer og
1 løsning

Finde poster på hver side af id.

Er der nogen sql der kan finde poster på hver side af et id. Problemet er såmænd ikke at finde dem, men kun at finde dem hvis

F.eks. har jeg 20 poster i alt og vælger id 10 og vil så gerne have 4 poster før og de 5 efter (10 i alt).

altså posterne fra id 6-15 - Fint nok. Problemet opstår hvis skal bruge id 2 - Så skal dem tage fra slutningen altså -

post 18,19,20,1,2,3,4,5,6,7

Og tilsvarende med post 18 så tage forfra.

14,15,16,17,18,19,20,1,2,3

Er der nogen der har et hint om hvordan jeg knækker den nød?
Avatar billede arne_v Ekspert
05. januar 2006 - 00:03 #1
jeg tror ikke at SQL er det rette men hvis du insisterer:

mysql> SELECT f1 FROM t1;
+----+
| f1 |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
+----+
5 rows in set (0.00 sec)

mysql>
mysql> (SELECT * FROM (SELECT f1,f1 AS x FROM t1 UNION ALL SELECT f1,f1-100 AS x FROM t1) tmp1 WHERE x < 4 ORDER BY x DESC LIMIT 2)
    -> UNION ALL
    -> (SELECT * FROM (SELECT f1,f1 AS x FROM t1 UNION ALL SELECT f1,f1+100 AS x FROM t1) tmp2 WHERE x >= 4 ORDER BY x LIMIT 3)
    -> ORDER BY x;
+----+-----+
| f1 | x  |
+----+-----+
|  2 |  2 |
|  3 |  3 |
|  4 |  4 |
|  5 |  5 |
|  1 | 101 |
+----+-----+
5 rows in set (0.00 sec)
Avatar billede nikolajdu Nybegynder
05. januar 2006 - 00:20 #2
Bliver det for tungt med sql? Skal jeg hellere finde antallet af poster først?
Avatar billede nikolajdu Nybegynder
05. januar 2006 - 00:22 #3
Jeg er i øvrigt ikke helt sikker på hvad du gør her :p()
Avatar billede nikolajdu Nybegynder
05. januar 2006 - 00:28 #4
ER det du gør her først at finde antallet med SELECT f1 FROM t1;

Hvad betyder de 100 du trækker fra og lægger til?

Damn den er tung den her :()
Avatar billede arne_v Ekspert
05. januar 2006 - 09:01 #5
100 er et passende stort tal som gøre at ANY(f1)+100 > MAX(f1) og ANY(f1)-100 < MIN(f1)
Avatar billede arne_v Ekspert
05. januar 2006 - 10:41 #6
SELECT f1 FROM t1;

er kun for at vise dig hvilke data der er

:-)
Avatar billede arne_v Ekspert
05. januar 2006 - 10:41 #7
jeg tror nok at jeg ville lave det som en query og så en ekstra query hvis jeg manglede noget
Avatar billede nikolajdu Nybegynder
19. januar 2006 - 05:54 #8
Smider du ikke et svar - Jeg finder aldrig ud af det her :p
Avatar billede arne_v Ekspert
19. januar 2006 - 14:17 #9
vi er ovre i noget som kan laves baade paenere og hurtigere i applikationen
end i SQL

og svar
Avatar billede nikolajdu Nybegynder
19. januar 2006 - 16:08 #10
Det tror jeg også - Jeg håbede bare at der var en lyner af en metode indbygget :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester