![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Jr. Member
![]() Registriert seit: 26.01.2002
Ort: Wien
Alter: 45
Beiträge: 87
|
![]() Hallo liebe Foren-Teilnehmer!
Ich steh bei einem Problem mit SQL/MS Access irgendwie auf der Leitung und hoffe, dass ihr mir bei einer (sicherlich einfachen) Aggregatfunktion helfen könnt. Ausgangslage: Ich habe eine Tabelle „tblKunden“ mit einer Schlüsselspalte „IDKunde“ und dem Namen der Kunden: Code:
tblKunden -------------- IDKunde: Integer VollerName: String Weiters gibt es eine Tabelle „tblKontostand“, in der zu jedem Kunden zu verschiedenen Daten ein Kontostand hinterlegt ist: Code:
tblKontostand -------------- IDKontostand: Integer (eindeutiger Bezeichner) Datum: Datum des Kontostands Kontostand: Höhe des Kontostands Ziel ---- Ich versuche nun, eine Abfrage/Sicht zu erhalten, bei der ich die KundenID, den Kundenname und den Kontostand zum letztmöglichen Datum erhalte. Also pro Kunde die Zeile: IDKunde, Vollername, Datum, Kontostand Irgendwie steh ich auf der Leitung, da alle meine Gruppierungsversuche in SQL scheitern… Mich würde es sehr freuen, wenn mir jemand helfen könnte! Vielen Dank im Voraus, webwurm |
![]() |
![]() |
![]() |
#2 |
Aussteiger
![]() |
![]() Nach deiner Angabe fehlt in der Kontostands-Tabelle die Referenz zum Kunden
![]() ![]() Code:
select kd.IDKunde, kd.VollerName, ko.Datum, ko.Kontostand from tblKunden kd, tblKontostand ko where ko.IDKunde = kd.IDKunde and ko.Datum = (select max(ko2.Datum) from tblKontostand ko2 where ko2.IDKunde = kd.IDKunde and ko2.IDKontostand = ko.IDKontostand ) ; Disclaimer: Diese Abfrage sollte ANSI-SQL sein und auch unter Access funktionieren. Unter Oracle geht sie definitiv.
____________________________________
Praktizierender Eristiker No hace falta ser un genio para saber quién dijo eso. Der wirklich faule Mensch ist oft extrem fleißig, denn er will möglichst schnell wieder faul sein. |
![]() |
![]() |
![]() |
#3 |
Inventar
![]() |
![]() Code:
select kd.IDKunde, kd.VollerName, ko.Datum, ko.Kontostand from tblKunden kd, tblKontostand ko where ko.IDKunde = kd.IDKunde and ko.Datum = (select ko2.Datum from tblKontostand ko2 where ko2.IDKunde = kd.IDKunde and ko2.IDKontostand = ko.IDKontostand order by ko2.datum desc fetch first 1 row only ) ; pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
![]() |
![]() |
![]() |
#4 |
Jr. Member
![]() Registriert seit: 26.01.2002
Ort: Wien
Alter: 45
Beiträge: 87
|
![]() Vielen herzlichen Dank für die Antworten!
Den Fremdschlüssel gibt es natürlich - sorry... Ich habe es nun so umgesetzt: Code:
SELECT tblKunden.IDKunde, tblKunden.VollerName, tblKontostand.IDKontostand, tblKontostand.Datum, tblKontostand.Kontostand FROM tblKunden INNER JOIN tblKontostand ON tblKunden.IDKunde = tblKontostand.IDKunde Where tblKontostand.Datum = DMAX("Datum", "tblKontostand", "IDKunde=" & tblKunden.IDKunde) webwurm |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|