[MySQL] group by ... order by ...

Pagina: 1
Acties:

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
code:
1
2
3
4
5
SELECT ip, host, DATE_FORMAT(MAX(log_timestamp), '%d-%m-%Y %T')
FROM fragments_visitors
GROUP BY host
ORDER BY log_timestamp DESC
LIMIT 10

geeft bij mij iets als (sterk vereenvoudigd):

# host timestamp
1 host1 16:00
2 host2 15:00
3 host3 15:30

oftewel, hij wordt niet goed gesorteerd op timestamp als-ie de hosts groepeert

als ik "GROUP BY ip" (ipv host) doe, neemt-ie binnen de groep wel de laatste timestamp (max), maar de eerste host (misschien toevalligerwijs de eerste, het is niet de juiste in ieder geval). misschien duidelijker: hij pakt niet gewoon 1 complete rij uit de groep, maar van verschillende rijen een veld (bij mij 1e host en laatste timestamp).

nou zag ik toevallig deze (uit sign. van ACM) over MySQL tekortkomingen: 13. It can't do ORDER BY ... DESC that well, it'll do a filesort. Even if there are only two results to sort.

is dat bij mij nou ook zo (buggy) of doe ik iets fout? ben eigenlijk wel benieuwd, want loop hier vaker tegenaan.

Verwijderd

X-Lars schreef op 20 januari 2004 @ 16:56:
code:
1
2
3
4
5
SELECT ip, host, DATE_FORMAT(MAX(log_timestamp), '%d-%m-%Y %T')
FROM fragments_visitors
GROUP BY host
ORDER BY log_timestamp DESC
LIMIT 10
code:
1
2
3
4
5
SELECT ip, host, DATE_FORMAT(MAX(log_timestamp), '%d-%m-%Y %T')
FROM fragments_visitors
GROUP BY ip,host
ORDER BY log_timestamp DESC
LIMIT 10

Dit gaat al iets beter werken.

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
inderdaad, eigenlijk wel logisch ook :) tnx
(hiermee zorg je er dus voor dat verschillende hosts met hetzelfde ip - bv. in netwerken etc. - ook worden weergegeven)

maar het probleem van de niet-sortering op log_timestamp blijft natuurlijk wel