Ich habe grad ein Brett vor'm Kopf... Wie kann ich möglichst elegent folgendes Problem formulieren (vereinfacht): Tabelle: ID NameID Datum ===================================== 1 1 2009-09-16 00:00:01 2 1 2009-09-16 00:00:02 3 1 2009-09-16 00:00:03 4 2 2009-09-16 00:00:04 5 2 2009-09-16 00:00:05 6 1 2009-09-17 00:00:01 7 1 2009-09-17 00:00:02 8 1 2009-09-18 00:00:01 9 1 2009-09-18 00:00:02 10 2 2009-09-18 00:00:03 11 3 2009-09-18 00:00:04 12 3 2009-09-18 00:00:05 Als Ergebnis meiner Abfrage möchte ich folgendes bekommen: ID NameID Datum =============================================== 9 1 2009-09-18 00:00:01 10 2 2009-09-18 00:00:03 12 3 2009-09-18 00:00:05 Mein Versuch (vereinfacht) war folgender: SELECT `ID`, `NameID`, `Datum` FROM `Tabelle` WHERE `Datum` LIKE '2009-09-18 %' AND ORDER BY `Datum` DESC GROUP BY `NameID` Das ganze funktioniert aber leider nicht, da man erst nach dem Gruppieren sortieren kann. Drehe ich das um, so erhalte ich nicht den "spätesten" Eintrag am Tag pro Person, sondern den Ersten. Sollte man das ganze mit einem verschachtelten SELECT lösen oder gibt es eine einfachere Variante?
Probier's mal so: SELECT max(`ID`), `NameID`, max(`Datum`) FROM `Tabelle` WHERE `Datum` LIKE '2009-09-18 %' GROUP BY `NameID` order by 3 wobei dabei max(id) aber nicht zwingend zu max(datum) passt.
Danke, funktioniert leider nicht, da die Tabelle in Wirklichkeit noch mehr Spalten hat, dessen Zuordnung dann verloren gehen. Außerdem liefert mir dann die Ausgabe nur eine Zeile.
sowas ähnliches hab ich heut in Oracle gemacht, falls MySQL auch sowas wie dir Analytical Functions wie Oracle hat, versuch mal sowas: http://sql-plsql-de.blogspot.com/2008/05/den-jngsten-datensatz-selektieren-mit.html
in den Kommentaren ist dort auch eine nicht so oracle-spezifische Lösung zu finden
Danke, ich habe es jetzt so gelöst: SELECT * FROM (SELECT ID, NameID, Datum FROM Tabelle WHERE Datum LIKE '2009-09-16%' ORDER BY Datum DESC) as virtual_table GROUP BY NameID
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.