Hallo ihr,
nachdem ich meine Access-Datenbank zum MS SQL Server 2008 Express migriert habe, funktioniert leider der SQL-Befehl „First“ / „Last“ nicht mehr. Über das Thema gibt es schon diverse Workarounds im Internet, aber nach einem kompletten Tag frustrierenden rumprobieren frag ich trotzdem einfach hier nochmal nach. Ich bin mir sicher, dass es für einen SQL-firmen Menschen ein Klacks ist:
Ich habe eine Tabelle Personen, eine Tabelle PersEmail und eine Tabelle Emailadressen. In erster sind klar alle Personen, in zweiter eine M:N-Verknüpfung zwischen Personen und Emailadressen und in dritter die Emailadressen selbst.
Was ich brauche ist die aktuelle Emailadresse der Person. Bis dato war das ganze nicht so schwierig. Alle drei Tabellen waren miteinander verknüpft, die M:N-Tabelle nach dem Datum der letzten Änderung der jeweiligen Verknüpfung absteigend sortiert und dann habe ich einfach mit „Erster Wert“ die aktuellste Emailadresse rausgesucht.
Mit dem SQL-Server funktioniert jetzt „First“ und „Last“ leider nicht mehr. Ich habe jetzt schon diverse Lösungen mit „Top 1“ durch - allerdings bekomme ich dann immer nur die erste Person angezeigt. Alle Versuche das „TOP 1“ irgendwo in den Code zu bringen um zu zeigen, dass ich nur bei der Emailadresse den ersten Wert angezeigt bekommen will half leider nicht.
Sicher weiß von euch jemand wie es funktioniert - bitte schenkt mir die 5 Minuten und erlöst mich von meinem Leiden
Stefan
Hier der (vereinfachte) Access-Code, der wunderbar funktionierte…:
SELECT Personen.Pers_ID,
First(Personen.Pers_Nachname) AS ErsterWertvonPers_Nachname,
First(Personen.Pers_Vorname) AS ErsterWertvonPers_Vorname,
First(Emailadressen.Email_Letzte_Änderung) AS ErsterWertvonEmail_Letzte_Änderung,
First(Emailadressen.Email_ID) AS ErsterWertvonEmail_ID,
First(Emailadressen.Email_Adresse) AS ErsterWertvonEmail_Adresse
FROM (PersEmail RIGHT JOIN Personen ON PersEmail.Pers_ID = Personen.Pers_ID)
LEFT JOIN Emailadressen ON PersEmail.Email_ID = Emailadressen.Email_ID
GROUP BY Personen.Pers_ID
ORDER BY Personen.Pers_ID, First(Emailadressen.Email_Letzte_Änderung) DESC;