- 20 April 2006
- 22.682
- 1.316
Moin.
Ich bin gerade am überlegen, wie es das am cleversten löse. PHP möchte ich nicht unbedingt damit bemühen, wenn man es mit einer entsprechenden Query schon in der DB machen kann.
Folgendes:
Ich habe eine Tabelle mit Messpunkten. Jeder Punkt hat einen Typ und einen UNIX-Zeitstempel.
z.B.
Wie gehe ich ran ? Spontan würde mir halt einfallen, ich lese mit
nur Werte jünger als eine Woche und nimm mit PHP den ersten für jeden Typ raus.
Kann ich das cleverer mit einer Subquery und einem LIMIT machen ?
Und was ich auch gleich nochmal nachfragen muss, weil ich mir da unsicher wäre: Wenn ich von jedem Typ nur den jüngsten Wert haben möchte, also einfach normal gruppiere, muss ich dann ein ORDER BY zeit DESC dazumachen ? Funktioniert das überhaupt und ist das äquivalent zu GROUP BY zeit DESC ?
Ich bin gerade am überlegen, wie es das am cleversten löse. PHP möchte ich nicht unbedingt damit bemühen, wenn man es mit einer entsprechenden Query schon in der DB machen kann.
Folgendes:
Ich habe eine Tabelle mit Messpunkten. Jeder Punkt hat einen Typ und einen UNIX-Zeitstempel.
z.B.
Ich möchte nun die Werte von allen Typen, die vor -sagen wir- einer Woche waren. Das Problem, wie man sieht, ist der Zeitstempel, da jeder Messpunkt zu einer anderen Zeit genommen wurde, d.h. jeder Typ hat "vor einer Woche" eine andere Zeit gehabt. Es sollten also möglichst die passenden Messpunkte geliefert werden, die am nähsten dran sind.Typ 1, Zeit 12234532, Wert 42
Typ 2, Zeit 12234537, Wert 43
Typ 3, Zeit 12234539, Wert 44
Typ 1, Zeit 12245545, Wert 41
Typ 2, Zeit 12235549, Wert 39
...
Wie gehe ich ran ? Spontan würde mir halt einfallen, ich lese mit
Code:
[FONT=Courier New][B][COLOR=#9932cc]SELECT[/COLOR][/B] zeit, wert
[B][COLOR=#9932cc]FROM[/COLOR][/B] tabelle
[B][COLOR=#9932cc]GROUP[/COLOR][/B] [B][COLOR=#9932cc]BY[/COLOR][/B] typ
[B][COLOR=#9932cc]WHERE[/COLOR][/B] zeit>=[B][COLOR=#9932cc]UNIX_TIMESTAMP[/COLOR][/B][COLOR=#9932cc]([/COLOR][COLOR=#9932cc])[/COLOR]-7*24*3600[/FONT]
Kann ich das cleverer mit einer Subquery und einem LIMIT machen ?
Und was ich auch gleich nochmal nachfragen muss, weil ich mir da unsicher wäre: Wenn ich von jedem Typ nur den jüngsten Wert haben möchte, also einfach normal gruppiere, muss ich dann ein ORDER BY zeit DESC dazumachen ? Funktioniert das überhaupt und ist das äquivalent zu GROUP BY zeit DESC ?
