Avatar billede tblaster Nybegynder
21. oktober 2006 - 13:14 Der er 5 kommentarer og
1 løsning

SQL - Trække sorteret poster ud efter en bestemt post

Hvordan kan jeg i MySQL sorter nogle poster og så kun trække de poster ud der kommer efter en post med et bestemt id? Lad mig give et eksempel for at forklar hvad jeg mener:

Tabellen indeholder eks. følgende poster:
ID: 1, Score/Stemmer = 6
ID: 2, Score/Stemmer = 7
ID: 3, Score/Stemmer = 9
ID: 4, Score/Stemmer = 4

Disse bliver så sorteret efter score og giver:
ID: 3, Score/Stemmer = 9
ID: 2, Score/Stemmer = 7
ID: 1, Score/Stemmer = 6
ID: 4, Score/Stemmer = 4

Nu vil jeg så have alle posterne ud, efter de er sorteret, som kommer efter posten med eks. id 2 i listen. Derfor skal jeg have en liste som:
ID: 1, Score/Stemmer = 6
ID: 4, Score/Stemmer = 2

Jeg har prøvet med følgende:
SELECT * from (select * FROM data ORDER BY Score/Stemmer) as temptabel Where id > 2

Men det trækker posterne ud som har et id der er størrere end 2 og ikke alle posterne som kommer efter posten med id 2 i den ordnet liste. Det vil sige i eksemplet ovenfor vil jeg kun få følgende ud:
ID: 4, Score/Stemmer = 2

Håber der er nogen af jer der kender en mulig løsning!
Avatar billede tblaster Nybegynder
24. oktober 2006 - 10:14 #1
Anyone?

Er det ikke muligt at få mysql til at give alle de sorteret posterne et nyt id (eks temp_id) fra 1 og fremad således at jeg kan trække ud efter denne?
Avatar billede tblaster Nybegynder
11. november 2006 - 10:45 #2
Det lader ikke til at der er nogen der ved hvordan det skal gøres. Så lad mig vende spørgsmålet lidt og se om der er nogen der kender den bedste måde at gøre det på ved benyttelse af ASP.

Kan det gøres bedre end på følgende måde?:
Do until Rs.EOF
  If SqlKlar Then
      ' Kode
  End If
  If rs("ID") = RQ_ID Then SqlKlar = True
  Rs.movenext
Loop
Avatar billede kirring Nybegynder
30. januar 2007 - 13:22 #3
SELECT * FROM tabel WHERE Score < (SELECT Score FROM tabel WHERE ID =2)ORDER BY Score DESC ;

Jeg er ikke helt sikker på hvad du vil have ud at queryen, men hvis du har flere poster med samme score som den med ID 2 så kommer de ikke med. 

jeg har lavet Score/Stemmer om til Score for at undgå / i et feltnavn
Jeg har ændret tabelnavnet til tabel, da data er et reserveret navn
Avatar billede tblaster Nybegynder
30. januar 2007 - 13:31 #4
Jeg syntes mit eksempel angiver meget godt hvad jeg ønsker. Din sql streng vil trække alle poster ud som har en score mindre end posten med ID 2 og jeg kan godt se at dette vil passe i mit eksempel. Men prøv at tilføje følgende post:
ID: 0, Score/Stemmer = 5

Denne post vil ikke blive trukket ud vha. din sql selvom den har en score/stemmer der er mindre end posten med ID 2.
Avatar billede kirring Nybegynder
30. januar 2007 - 13:39 #5
Det vil den da ??
Avatar billede tblaster Nybegynder
30. januar 2007 - 16:59 #6
Ahh, sorry. Havde lige drejet det forkert. Tror faktis du har ret. Men jeg har ingen ide om hvad status på problemet blev, men jeg er ret sikker på at det blev løst på en eller anden måde. Skal nok lige få kigget på det ved lejlighed og så vende tilbage.
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