[mysql] dubbel sorteren

Pagina: 1
Acties:
  • 47 views sinds 30-01-2008

  • Zydell
  • Registratie: September 2000
  • Laatst online: 28-06 12:40

Zydell

* * * * *

Topicstarter
Ik heb een tabel met gegevens (doh) en ik wil de laatste 25 toegevoegde gegevens in een tabel weergeven, dan doe ik gewoon zoiets als:

'SELECT * FROM tabel ORDER BY id desc LIMIT 25'

Die gegevens horen echter tot een categorie bijvoorbeeld A, B en C.
Nou wil ik echter dat van die 25 laatst toegevoegde gegevens die gegevens die tot categorie 'A' horen onder elkaar komen te staan gesorteerd op ID en dat die gegevens die tot categorie 'B' horen ook onder elkaar komen te staan (ook gesorteerd op ID) etc. Echter alleen de laatst 25 toegevoegde waarden moeten gesorteerd worden op categorie!

voorbeeld:

id waarde categorie:
01 111111 A
02 222222 B
03 333333 B
04 444444 A
05 555555 C
06 666666 B
07 777777 A

(laatste 5 eruit pakken en sorteren op categorie)

moet worden:

id waarde categorie
04 444444 A
07 777777 A
03 333333 B
06 666666 B
05 555555 C

heb al te veel geprobeerd, maar kom er niet uit :(

Verwijderd

Gokje
'SELECT max(id) from tabel'
'SELECT * FROM tabel where id > $maxid-5 ORDER BY category desc LIMIT 25'

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:47
Ik zou gokken dat 't niet met een enkele query kan in MySQL =)

Als het maar om 25 resultaten gaat, kan je ze natuurlijk best client-side sorteren. Als je dat vies vind (of je gebruikt PHP ofzo, waardoor dat niet zo eenvoudig is), kan je het wel met twee queries doen: eerst de 25 id's opvragen en daarna de 25 bijbehorende items, gesorteerd op categorie.

Helaas is dit waarschijnlijk niet het antwoord waar je op zat te wachten. =(

  • Zydell
  • Registratie: September 2000
  • Laatst online: 28-06 12:40

Zydell

* * * * *

Topicstarter
Op zaterdag 12 januari 2002 16:52 schreef GDOG het volgende:
Gokje
'SELECT max(id) from tabel'
'SELECT * FROM tabel where id > $maxid-5 ORDER BY category desc LIMIT 25'
probleem hierbij is dat id niet 1, 2, 3, 4, 5 is maar bijvoorbeeld 1, 2, 6, 8, 9 kan zijn.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

order by category desc, id asc ...

Lang leve manuals ;)

  • Zydell
  • Registratie: September 2000
  • Laatst online: 28-06 12:40

Zydell

* * * * *

Topicstarter
klopt niet,

wat je dan krijg is dat ie eerst alle C's pakt en sorteert op id, daarna alle B's en sorteert op id etc. hij pleurt ze vervolgens mooi onder elkaar, dus alle C's boven daarna alle B's en daarna alle A's MAAR sommige C's moeten daar helemaal niet staan want die C's horen niet tot de laatste 25 toegevoegde waarden...

hij moet EERST de laatste 25 waarden pakken, en vervolgens van die 25 waarden de waarden tot categorie A, B en C bij elkaar doen (zodat je een tabel krijg met eerst de C's van de laatste 25 waarden, daarna de B's van de laatste 25 waarden en daarna de A's van de laatste 25 waarden).

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:47
edit:
Ik ga even m'n mond houden, voor ik wéér wat doms er tussendoor roep.

  • Zydell
  • Registratie: September 2000
  • Laatst online: 28-06 12:40

Zydell

* * * * *

Topicstarter
Ik ben er uit.
Ik heb eerst een query gemaakt waar ie de id van de laatste 25 opvraagt. De eerste van die 25 ($eersteid) gebruik is als voorwaarde voor de tweede query. Dus: SELECT * FROM tabel WHERE id >=< (1 van de drie of 2 ervan =)) $eersteid)

Verwijderd

Haal al je id's op, maak er een "rijtje" van en dan:
'select * from tabel where id in(2,5,6,8,9) order by category

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Arjenn: Je hebt in ieder geval een Officiele Waarschuwing voor herhaaldelijk zinloos een topic omhoog schoppen.
Pagina: 1

Dit topic is gesloten.