19. oktober 2003 - 01:16Der er
6 kommentarer og 1 løsning
Hent 5 rækker hvor id for række nummer 3 kendes
Jeg skal sende en forespørgsel til mysql hvor jeg skal hente 5 rækker. Jeg kender alle data for række nummer 3. For at gøre det mindre kompliceret skal I blot forestille jer at jeg har 2 felter: mysql> SELECT * FROM table ORDER BY timestamp DESC; +----+------------+ | id | timestamp | +----+------------+ | 2 | 1066408733 | | 4 | 1065373445 | | 6 | 1058116492 | | 5 | 1058057042 | | 9 | 1058056941 | | 8 | 1058056742 | | 7 | 1057829662 | +----+------------+
Som I kan se kommer id og timestamp ikke i samme rækkefølge. Nu har jeg så id'et for en række jeg vil have skal være nummer 3 (ikke nødvendigvis id=3) ud af 5, dvs. jeg skal have 2 rækker med højere timestamps og 2 rækker med lavere timestamps. Desuden er der jo den mulighed at der ikke er nogen rækker højere (eller lavere) timestamps. I et sådant tilfælde er det okay at den række med det id jeg kender bliver nummer 1,2,4 eller 5 i resultatet. Hvordan gør jeg det?
Tusind tak - Det var godt nok smart! Til andre interesserede kan det siges at den er beskrevet i manualen 6.4.1.2 - og at den først virker fra version 4! Gider du lige tilføje et svar så du kan få point?
Jeg læser lige dit spørgsmål igen, og du siger vist at du altid vil have 5 rækker. Men hvis id-et er lige i starten, eller i slutningen, så får du måske kun 3. Er det ok?
Synes godt om
Slettet bruger
20. oktober 2003 - 15:57#5
Tja, hvis der er mulighed for at trække 3 eller 4 rækker ud, som har lavere end timestamp på en given række, men kun hvis rækken kommer som 1. eller 2. resultat i den første del af query'en. Det er meget rodet forklaret, håber du kan forstå det.
Den eneste måde jeg kan se er at gøre noget i et scriptsprog ved siden af. Du kan fx altid hent 4 før og 4 efter, og så ved udskrift springe nogen over. Jeg tror ikke du kan lave en simpel SQL-sætning til det
Synes godt om
Slettet bruger
20. oktober 2003 - 20:37#7
Nej, men det er egentlig heller ikke så svært med PHP - jeg ville bare vide om det kunne lade sig gøre på en forholdsvis simpel måde i PHP. Tusind tak!
Synes godt om
Ny brugerNybegynder
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.