Hallo,
ich bin eigentlich im Sozialbereich tätig, also bitte verzeiht mir wenn ich Anfängerfragen stelle.
Ich soll für ein psychologisches Institut einige Statistiken erstellen und mache das auf einem MSSQL-Server (2005). Wir haben eine Datenbank mit den Stammdaten von den Klienten und einige weitere Datenbanken in denen pro Klient mehrere Einträge liegen können. Zb. eine "Befunde-Datenbank" in denen alle Befunde des Klienten abgelegt werden, was meistens mehr als einer ist. Verknüpft durch die ID des Klienten.
Ich soll jetzt eine Abfrage gestalten in der die Stammdaten ausgelesen werden und einige weitere Daten und eben das Datum des LETZTEN Befundes.
Wie mache ich das? Mit allen möglichen JOIN-Befehlen komme ich da nicht weiter. LIMIT gibts im MSSQL nicht und mit TOP 1 erhalte ich auch irgendwie nicht das richtige Ergebnis.
Momentan siehts so aus:
SELECT Klient_Stammdaten.Nachname, Klient_Stammdaten.Vorname, Klient_Justiz.Auflagenende, Klient_Justiz.Beschluss, Klient_Befunde.Datum,
Klient_Stammdaten.Gruppe
FROM Klient_Stammdaten INNER JOIN
Benutzer_Stammdaten ON Klient_Stammdaten.ID_Benutzer_Stammdaten = Benutzer_Stammdaten.ID INNER JOIN
Klient_Historie ON Klient_Stammdaten.ID = Klient_Historie.ID_Klient_Stammdaten RIGHT OUTER JOIN
Klient_Justiz ON Klient_Stammdaten.ID = Klient_Justiz.ID_Klient_Stammdaten LEFT OUTER JOIN
Klient_Befunde ON Klient_Stammdaten.ID = Klient_Befunde.ID_Klient_Stammdaten
WHERE (Klient_Historie.Behandlungsstatus = 'aktiv')
ORDER BY Klient_Stammdaten.Gruppe DESC
Momentan wird für jeden Befund eine eigene Zeile ausgegeben. Also der Klient kommt ca. 10-20 Mal vor und erst dann ist der nächste Klient. Gibt es irgendeine Möglichkeit, dass nur das letzte Befund-Datum ausgelesen wird und jeder Klient nur einmal angezeigt wird?
Das wäre mir eine sehr große Hilfe wenn ihr euch da auskennt.
ich bin eigentlich im Sozialbereich tätig, also bitte verzeiht mir wenn ich Anfängerfragen stelle.
Ich soll für ein psychologisches Institut einige Statistiken erstellen und mache das auf einem MSSQL-Server (2005). Wir haben eine Datenbank mit den Stammdaten von den Klienten und einige weitere Datenbanken in denen pro Klient mehrere Einträge liegen können. Zb. eine "Befunde-Datenbank" in denen alle Befunde des Klienten abgelegt werden, was meistens mehr als einer ist. Verknüpft durch die ID des Klienten.
Ich soll jetzt eine Abfrage gestalten in der die Stammdaten ausgelesen werden und einige weitere Daten und eben das Datum des LETZTEN Befundes.
Wie mache ich das? Mit allen möglichen JOIN-Befehlen komme ich da nicht weiter. LIMIT gibts im MSSQL nicht und mit TOP 1 erhalte ich auch irgendwie nicht das richtige Ergebnis.
Momentan siehts so aus:
SELECT Klient_Stammdaten.Nachname, Klient_Stammdaten.Vorname, Klient_Justiz.Auflagenende, Klient_Justiz.Beschluss, Klient_Befunde.Datum,
Klient_Stammdaten.Gruppe
FROM Klient_Stammdaten INNER JOIN
Benutzer_Stammdaten ON Klient_Stammdaten.ID_Benutzer_Stammdaten = Benutzer_Stammdaten.ID INNER JOIN
Klient_Historie ON Klient_Stammdaten.ID = Klient_Historie.ID_Klient_Stammdaten RIGHT OUTER JOIN
Klient_Justiz ON Klient_Stammdaten.ID = Klient_Justiz.ID_Klient_Stammdaten LEFT OUTER JOIN
Klient_Befunde ON Klient_Stammdaten.ID = Klient_Befunde.ID_Klient_Stammdaten
WHERE (Klient_Historie.Behandlungsstatus = 'aktiv')
ORDER BY Klient_Stammdaten.Gruppe DESC
Momentan wird für jeden Befund eine eigene Zeile ausgegeben. Also der Klient kommt ca. 10-20 Mal vor und erst dann ist der nächste Klient. Gibt es irgendeine Möglichkeit, dass nur das letzte Befund-Datum ausgelesen wird und jeder Klient nur einmal angezeigt wird?
Das wäre mir eine sehr große Hilfe wenn ihr euch da auskennt.
Comment