[MySQL] GROUP BY ná ORDER BY...

Pagina: 1
Acties:
  • 1.071 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 30-04 10:28

JeRa

Authentic

Topicstarter
Ik neem als voorbeeld even deze tabel:
---------------
| pid | value |
---------------
| 1   | 30    |
| 1   | 20    |
| 1   | 10    |
| 2   | 25    |
| 2   | 15    |
| 2   | 35    |
| 3   | 30    |
| 3   | 50    |
---------------

Ik wil aflopend sorteren op value en vervolgens geen dubbele pid's hebben - die wil ik dus groeperen. In dit geval zou ik dus dit als resultaat willen zien:
---------------
| pid | value |
---------------
| 3   | 50    |
| 2   | 35    |
| 1   | 30    |
---------------

Hierbij is dus het probleem dat ik een GROUP BY wil uitvoeren ná een ORDER BY, wat natuurlijk niet kan. Als ik even hier vanuit ga:
SQL:
1
2
3
SELECT pid
FROM tabel
ORDER BY value DESC

Een GROUP BY kan ik niet toevoegen omdat die vóór de ORDER BY moet komen. Een SELECT DISTINCT werkt niet zoals ik verwacht, de resultaten zijn dan in willekeurige volgorde. Een HAVING na de GROUP BY heeft geen zin omdat ik de oorspronkelijke values niet meer aanspreken (die zijn verwijderd door de GROUP BY). Een WHERE met een aggregate function werkt niet omdat hij dan de aggregate function niet wil uitvoeren omdat dan de GROUP BY nog niet is toegepast.

Volgens mij kijk ik er gewoon helemaal naast :{ maar wie kan me het verlichtende woord bieden? :)

ifconfig eth0 down


Acties:
  • 0 Henk 'm!

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 30-04 10:28

JeRa

Authentic

Topicstarter
Damn, soms heeft het gewoon wat uren nodig voordat je het ziet. :{
SQL:
1
2
3
4
SELECT pid, MAX(value) AS maxvalue
FROM tabel
GROUP BY pid
ORDER BY maxvalue DESC

Excuses :)

[ Voor 4% gewijzigd door JeRa op 16-05-2006 06:01 ]

ifconfig eth0 down


Acties:
  • 0 Henk 'm!

  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02 14:52
JeRa schreef op dinsdag 16 mei 2006 @ 06:01:

Damn, soms heeft het gewoon wat uren nodig voordat je het ziet
Uren? 8 minuten volgens mijn telling :)