WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 16.06.2011, 13:57   #1
webwurm
Jr. Member
 
Registriert seit: 26.01.2002
Ort: Wien
Alter: 45
Beiträge: 87


Standard SQL-Abfragen / Access: Frage zu Abfragen

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
webwurm ist offline   Mit Zitat antworten
Alt 16.06.2011, 17:03   #2
pc.net
Aussteiger
 
Benutzerbild von pc.net
 
Registriert seit: 07.10.2001
Ort: Nettistan
Beiträge: 12.997

Mein Computer

Standard

Nach deiner Angabe fehlt in der Kontostands-Tabelle die Referenz zum Kunden . Ich gehe beim folgenden Statement aber davon aus, dass der Fremdschlüssel IDKunde bei jedem Konto vorhanden ist. Außerdem beziehe ich die Möglichkeit mit ein, dass es zu einem Kunden mehrere Konten geben kann (nicht so unüblich ).

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.
pc.net ist offline   Mit Zitat antworten
Alt 17.06.2011, 05:41   #3
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

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
                 )
;
Alternative zur Aggregatfunktion.

pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Alt 20.06.2011, 11:28   #4
webwurm
Jr. Member
 
Registriert seit: 26.01.2002
Ort: Wien
Alter: 45
Beiträge: 87


Standard

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)
Danke und lg,
webwurm
webwurm ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:01 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag