Einzelnen Beitrag anzeigen

Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#1

GROUP BY nach ORDER BY?

  Alt 21. Feb 2009, 16:08
Datenbank: MySQL • Version: 4.1 • Zugriff über: PHP-Funktionen
Hallo ihr,

fuer eine Abrechnungssoftware muss ich ein Query schreiben, welches die aktuellsten Daten aller Mitarbeiter ausliest. Da es sich um eine Abrechnungssoftware handelt, muss natuerlich die Historie aller Mitarbeiter speichern. Ich habe deshalb zwei Tabellen:
  • employees_employees, welche "normale" Daten, wie z.B. Name, Geburtsdatum, usw. speichert, also alle Informationen, welche man nur einmal eingibt
  • employees_employee_data, welche alle aenderbaren Daten (Bankverbindung, Lohnsteuerklasse, usw.) speichert. Diese Tabelle enthaelt auch ein Feld, welches das Startdatum der Gueltigkeit dieser Daten bestimmt.

Ich benoetige nun ein Query, welches mir die aktuellsten Daten aller Mitarbeiter ausliest. Theoretisch wuerde dies so aussehen:
SQL-Code:
select ee.nickname, eed.* FROM employees_employees ee, employees_employee_data eed WHERE ee.id = eed.emp_id
ORDER BY ee.nickname ASC, eed.start_date DESC
GROUP BY ee.id
Wichtig ist die absteigende Sortierung nach dem Startdatum, da natuerlich der Datensatz mit dem neuesten Datum die aktuellsten Daten enthaelt. Das Problem bei der Sache: GROUP muss vor ORDER kommen, weshalb obige Abfrage auch nicht funktioniert.

Weiss jemand wie ich diese Abfrage so schreiben kann, dass ich die benoetigten Daten mit einem Query rauskriege? Ich koennte den GROUP ja auch weglassen, aber ich wuerde ungern alle Datensaetze auslesen (man stelle sich vor wieviel da zusammenkommt, wenn 200 Mitarbeiter 10 Jahre lang beschaeftigt waren ) und erst bei der Ausgabe die irrelevanten Daten ueberspringen.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat