access.sql ( zeige mir alle datensätze wo nach x jahren nichts mehr eingetrage wurde)

ScarabXX

Grünschnabel
Hallo,
habe ein kleines Problem, habe nicht sehr viel Erfahrung mit Access.Sql...

Also folgendes Problem:

Zeige mir alle Personenkonten , die seit x Jahren keine Buchungen mehr hatten...

folgende Tabellen:

tblLieferanten
- strKonto

tblBuchungen
- strZahlemf ( Verweis auf strKonto in tblLieferanten )
- intBuchJahr

So also ich müsste halt alle Datensätze ausgegeben haben, die vor x Jahren noch einträge haben, aber nach x Jahren keine mehr...

Könnte mir da vielleicht jemand behilflich sein?

Mfg
ScarabXX
 
Hallo,

du musst beide Tabellen über die ID Joinen. Dann alle Attribute Gruppieren und ein MAX() auf
intBuchJahr.

Ein SQL Code könnte So aussehen:

Code:
SELECT tblLieferanten.strKonto, MAX(tblBuchungen.intBuchJahr) intBuchJahr 
FROM tblLieferanten INNER JOIN tblBuchungen ON tblLieferanten.strKonto=tblBuchungen.strZahlemf
GROUP BY tblLieferanten.strKonto

Bei intBuchJahr steht nun der größte Wert also in deinem Fall das Jahr der letzten Buchung.
 
Hallo marbe,

also so wie ich deine Ausgabe jetzt verstanden habe, werden alle daten ausgegeben mit ihren maximalen jahren...

BSP.:

Kunde A 2005
Kunde B 2006
Kunde C 2003

Ich möchte allerdings jetzt alle ausgeben, die maximal Jahr 2004 z.B. als letztes Buchungsjahr haben...

Bei deinem Sql Code erwartet der einen Parameterwert für strzahlempf...

Könntest du mir ncoh weiter helfen oder jemand anderes eine Idee?

Mfg
ScarabXX
 
Hallo,

du kannst nachdem Du das Resultat gesehen hast ein HAVING anwenden so zB
Code:
SELECT tblLieferanten.strKonto, MAX(tblBuchungen.intBuchJahr) intBuchJahr 
FROM tblLieferanten INNER JOIN tblBuchungen ON tblLieferanten.strKonto=tblBuchungen.strZahlemf
GROUP BY tblLieferanten.strKonto
HAVING  MAX(tblBuchungen.intBuchJahr) <= 2004

So werden nur noch Sätze ausgegeben wo das letzte Buchungjahr vor und gleich 2004 war.

Ich hoffe das trifft auf deine Frage zu jetzt.

Gruß
 
Ich habe nun diese Abfrage ausprobiert und diese funktioniert so wie sie es soll, besten Dank für deine Mithilfe

Code:
SELECT tblLieferanten.strName1, Max(tblBuchungen.intBuchJahr) AS [Max von intBuchJahr]
FROM tblLieferanten INNER JOIN tblBuchungen ON tblLieferanten.strKonto = tblBuchungen.strZahlempf
GROUP BY tblLieferanten.strName1
HAVING (((Max(tblBuchungen.intBuchJahr))<2005));

Mit freundlichem Gruß
ScarabXX
 
Zurück