![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: PHP
SQL Befehl: erster und letzter Datensatz
Hallo,
ich habe zwei Tabellen tab_users und tab_values. In tab_users stehen Benutzerdaten drin wie zB uid und nickname. In tab_values stehen werte zu den Benutzern drin welche stündlich eingetragen werden, das ganze mit nem zeitstempel. Jetzt möchte ich mir den ersten und den letzten Datensatz zu jedem Benutzer innerhalb eines Zeitraumes ausgeben lassen. Wie sollte da am besten das Statement aussehen? Bisher hab ich nur das:
SQL-Code:
Also noch keinerlei Filter bzgl erster und letzter DS des Zeitraums.
select * from tab_values where statetime>=$anfang and statetime <=$ende order by uid
Irgendwie muss das doch bestimmt mit den min und max Aggregatfunktionen gehen oder? Ich komm irgendwie nich drauf :gruebel: |
Re: SQL Befehl: erster und letzter Datensatz
min(starttime) und max(starttime)
|
Re: SQL Befehl: erster und letzter Datensatz
ja schon, aber wie bring ich das im statement unter damit auch nur die beiden ds angezeigt werden?
|
Re: SQL Befehl: erster und letzter Datensatz
Eine Union könnte auch helfen
SQL-Code:
select
* from tab_values where statetime>=$anfang and statetime <=$ende group by uid order by starttime asc limit 1 union select * from tab_values where statetime>=$anfang and statetime <=$ende group by uid order by starttime desc limit 1; |
Re: SQL Befehl: erster und letzter Datensatz
Das geht auch schicker...
SQL-Code:
SELECT *
FROM tab_users u INNER JOIN tab_values v ON u.uid = v.uid WHERE statetime BETWEEN :anfang AND :ende AND ( statetime = (SELECT MIN(statetime) FROM tab_values WHERE uid = u.uid AND statetime BETWEEN :anfang AND :ende) OR statetime = (SELECT MAX(statetime) FROM tab_values WHERE uid = u.uid AND statetime BETWEEN :anfang AND :ende)) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz