- 20 April 2006
- 22.682
- 1.316
Moin.
Eine Frage, weil ich mir nicht 100%ig sicher bin, wie sich MySQL verhält.
Gegeben ist eine Tabelle mit UNIX-Timestamps. Nun möchte ich von dieser Tabelle die jeweils erste Zeile, also die mit dem kleinsten Timestamp eines jeden Tags auslesen. Die Tage sollen dann absteigend sortiert sein.
Meine Query lautet:
Ich bin mir jetzt nur nicht sicher, ob das nur deshalb funktioniert, weil die Einträge zufällig alle chronologisch reingekommen sind oder ob das wirklich korrekt ist.
Es steht ja eigentlich nirgendwo, dass ich den ersten Eintrag haben will
Ich hab mal noch einen zweiten Ansatz mit Self-JOIN probiert. Sobald ich aber irgendwas von Zeit aufsteigend sortieren reinschreib, krieg ich das Ergebnis aufsteigend, was ich ja nicht will.
Ok, während ich den Post nochmal durchgelesen hab, is mir noch ne dritte Idee gekommen:
Allerdings bräuchte ich dann hier noch eine weitere Abfrage, in der ich zur Minimalzeit noch den Rest der Zeile abrufe.
Was is richtig ? Was is am besten
Eine Frage, weil ich mir nicht 100%ig sicher bin, wie sich MySQL verhält.
Gegeben ist eine Tabelle mit UNIX-Timestamps. Nun möchte ich von dieser Tabelle die jeweils erste Zeile, also die mit dem kleinsten Timestamp eines jeden Tags auslesen. Die Tage sollen dann absteigend sortiert sein.
Meine Query lautet:
Code:
[FONT=Courier New][B][COLOR=#9932cc]SELECT[/COLOR][/B] `time`,[B][COLOR=#9932cc]FROM_UNIXTIME[/COLOR][/B][COLOR=#9932cc]([/COLOR]`time`[COLOR=#9932cc])[/COLOR] [B][COLOR=#9932cc]AS[/COLOR][/B] `realtime`,`stuff`
[B][COLOR=#9932cc]FROM[/COLOR][/B] `table`
[B][COLOR=#9932cc]GROUP[/COLOR][/B] [B][COLOR=#9932cc]BY[/COLOR][/B] [B][COLOR=#9932cc]TO_DAYS[/COLOR][/B][COLOR=#9932cc]([/COLOR][B][COLOR=DarkOrchid]FROM_UNIXTIME[/COLOR][/B][COLOR=DarkOrchid]([/COLOR]`time`[COLOR=#9932cc])[/COLOR][COLOR=DarkOrchid])[/COLOR] [B][COLOR=#9932cc]DESC[/COLOR][/B][/FONT]
Es steht ja eigentlich nirgendwo, dass ich den ersten Eintrag haben will

Ich hab mal noch einen zweiten Ansatz mit Self-JOIN probiert. Sobald ich aber irgendwas von Zeit aufsteigend sortieren reinschreib, krieg ich das Ergebnis aufsteigend, was ich ja nicht will.
Code:
[FONT=Courier New][B][COLOR=#9932cc]SELECT[/COLOR][/B] `a`.`time`,[B][COLOR=#9932cc]FROM_UNIXTIME[/COLOR][/B][COLOR=#9932cc]([/COLOR]`a`.`time`[COLOR=#9932cc])[/COLOR] [B][COLOR=#9932cc]AS[/COLOR][/B] `realtime`,`stuff`
[B][COLOR=#9932cc]FROM[/COLOR][/B] `table` [B][COLOR=#9932cc]AS[/COLOR][/B] `a`
[B][COLOR=#9932cc]LEFT[/COLOR][/B] [B][COLOR=#9932cc]JOIN[/COLOR][/B] `table` [B][COLOR=#9932cc]AS[/COLOR][/B] `b` [B][COLOR=#9932cc]USING[/COLOR][/B](`id`)
[B][COLOR=#9932cc]GROUP[/COLOR][/B] [B][COLOR=#9932cc]BY[/COLOR][/B] [B][COLOR=#9932cc]TO_DAYS[/COLOR][/B][COLOR=#9932cc]([/COLOR][COLOR=DarkOrchid][B]FROM_UNIXTIME[/B]([/COLOR]`a`.`time`[COLOR=#9932cc])[/COLOR][COLOR=DarkOrchid])[/COLOR] [B][COLOR=#9932cc]DESC[/COLOR][/B]
[B][COLOR=#9932cc]ORDER[/COLOR][/B] [B][COLOR=#9932cc]BY[/COLOR][/B] `b`.`time` [B][COLOR=#9932cc]ASC[/COLOR][/B][/FONT]
Code:
[FONT=Courier New][B][COLOR=#9932cc]SELECT[/COLOR][/B] [B][COLOR=#9932cc]MIN[/COLOR][/B][COLOR=#9932cc]([/COLOR]`time`[COLOR=#9932cc])[/COLOR] [B][COLOR=#9932cc]AS[/COLOR][/B] `time`,[B][COLOR=#9932cc]FROM_UNIXTIME[/COLOR][/B][COLOR=#9932cc]([/COLOR][COLOR=DarkOrchid][B]MIN[/B]([/COLOR]`time`[COLOR=#9932cc])[/COLOR][COLOR=DarkOrchid])[/COLOR] [B][COLOR=#9932cc]AS[/COLOR][/B] `realtime`
[B][COLOR=#9932cc]FROM[/COLOR][/B] `table`
[B][COLOR=#9932cc]GROUP[/COLOR][/B] [B][COLOR=#9932cc]BY[/COLOR][/B] [B][COLOR=#9932cc]TO_DAYS[/COLOR][/B][COLOR=#9932cc]([/COLOR][COLOR=DarkOrchid][B]FROM_UNIXTIME[/B]([/COLOR]`time`[COLOR=#9932cc])[/COLOR][COLOR=DarkOrchid])[/COLOR] [B][COLOR=#9932cc]DESC[/COLOR][/B]
[B][COLOR=#9932cc]ORDER[/COLOR][/B] [B][COLOR=#9932cc]BY[/COLOR][/B] `time` [B][COLOR=#9932cc]DESC[/COLOR][/B][/FONT]
Was is richtig ? Was is am besten