[MySQL] laatste record van elke dag ophalen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ieperlingetje
  • Registratie: September 2007
  • Niet online
Ik heb een tabel waarin om de zoveel uur data aan toegvoegd wordt over mijn internetverkeer. Die tabel bevat de datum en het totaal aantal verbruikte MB's van die maand. In de tabel worden de datums opgeslagen in UNIX timestamps (via php time() ). Nu wil ik van elke dag het laatste record ophalen. Via google had ik al iets gevonden (http://stackoverflow.com/...-multiple-entries-per-day) maar wanneer ik het script aanpas naar mijn tabel, blijkt het niet meer te werken, alle records worden weergegeven. Iemand een idee hoe ik van elke dag het laatste record kan ophalen?

dit is mijn code (aangepast van stackoverflow.com, maar werkt dus niet):

SQL:
1
2
3
4
5
6
7
8
SELECT a.datum, a.verbruik
    FROM telemeter AS a,
        (SELECT verbruik,datum, DATE(FROM_UNIXTIME(datum)) AS just_date, MAX(datum)
            FROM telemeter
            GROUP BY verbruik, just_date
        ) AS b
    WHERE a.verbruik = b.verbruik
      AND a.datum = b.datum

Tijdmachine | Nieuws trends


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Nog een groupwise max uitwerking. :)

Je wilt in de binnenste query maar 1 row per dag, dus de verbruik kolom moet daar weg. Idealiter groepeer je op datum en selecteer je max(id) en join je daar tegen in de buitenste query.

{signature}


Acties:
  • 0 Henk 'm!

  • ieperlingetje
  • Registratie: September 2007
  • Niet online
bedankt, met max() heb ik het laatste record van de dag kunnen ophalen

code:
1
2
3
4
"SELECT verbruik, datum, DATE(FROM_UNIXTIME(datum)) as ddatum, MAX(verbruik) AS totaalverbruik FROM telemeter
WHERE MONTH(DATE(FROM_UNIXTIME(datum))) = '$huidigemaand' 
GROUP BY day(DATE(FROM_UNIXTIME(datum))) 
ORDER BY day(DATE(FROM_UNIXTIME(datum)))"

Tijdmachine | Nieuws trends


Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
"verbruik" moet ook nog in de GROUP BY staan, anders is de query fout.