jo
dennoch zur vollständigkeit will ich nochmal die falle mit aggregat funktionen aufzeigen . Da dort keine der vorgeschlagenen Lösungen (also auch meine) einen echten erfolg verbucht.
Es ist theorie aber offt resultiert daraus dann falsche ergebnisse da indexe nicht genutz oder vorhanden sind.
*****************
vorsicht bei aggregat funktionen
Vorgabe :
angenommen wir haben eine stempeluhr die 15minuten weiter schaltet.
die leute arbeiten in einer section und haben einen namen ,
in dieser reihenfolge sind die daten eingeganen von heute.
section name zeit
gruppe ingo 10:00:00
gruppe thomas 10:00:00
gruppe thomas 16:00:00
gruppe ingo 16:00:00
masse rene 10:00:00
masse igor 10:00:00
masse rene 16:00:00
masse igor 16:00:00
Frage :
Wer hat aus welcher Sektion als letztes gestempelt.
Datenbank Querry
SELECT section, max( zeit ) AS maxzeit
FROM www_test_order
GROUP BY section
gruppe 16:00:00
masse 16:00:00
SELECT section, name,zeit FROM www_test_order
, max where zeit=maxzeit
falsches Ergebnis :
gruppe thomas 16:00:00
gruppe ingo 16:00:00
masse rene 16:00:00
masse igor 16:00:00
ok ich mach dann nochmal ein group by daraus
SELECT section, name,zeit FROM www_test_order
, max where zeit=maxzeit GROUP by section
oder
SELECT section, name, zeit FROM ( SELECT section, name, zeit FROM www_test_order ORDER BY zeit DESC ) AS preorderdatetime GROUP BY section ASC
immernoch falsches Ergebnis :
gruppe thomas 16:00:00
masse rene 16:00:00
richtiges Ergebnis kann nicht ermittelt werden :
gruppe ingo 16:00:00
masse igor 16:00:00
Ergo :
wir sehen also der record (datensatz) wird bei anwendung von max() nicht erhalten.
Beim weiteren select haben wir keinen index der den eingang der gleichzeitgen stempel
der gleichen 15 minuten unterscheidet.
Keine der Methoden kann greifen , da es nicht den letzten sondern die letzen wenn überhaupt zeigt.
Der Pfördner am Stempelautomat würd jedenfals sagen ingo und igor sind als letztes rausgegangen.
In solchen fällen sollte ein index her der die reihenfolge der eingänge belegt
P.S. selbstkritik, schreibfehler geben einen punkt pro fund (-)