Einzelnen Beitrag anzeigen

Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#1

Self join und Abs()

  Alt 29. Aug 2011, 23:08
Datenbank: SQLite • Version: 3.26 • Zugriff über: AnyDAC
Ich möchte Geldflüsse nachvollziehen.
Ein Beispiel: am 01.10. wurden 100 € von einem Konto überwiesen und am 03.10 sind diese auf einem anderen Konto eingegangen und dort wiederum weiter überwiesen worden.
Nun muss ich ja hier den Betrag 100 € und -100 € abfragen und auch den Zeitraum der Buchungen berücksichtigen. Als Beispiel habe ich mal 7 Tage angesetzt.

Aufbau meiner Tabelle "Buchungen", die alle Buchungen aller Konten enthält:
Code:
ID
KontoID
Buchungstag
Geldbetrag
Verwendungszweck
Kontonummer
Bankleitzahl
Bemerkungen
Mein bisheriger Lösungansatz:
Code:
select
b1.id,
b1.KontoID,
b1.Buchungstag,
b1.geldbetrag,
Abs(b1.geldbetrag) as b1absgeldbetrag,
b1.Verwendungszweck,
b1.Kontonr,
b1.BLZ,
b1.Bemerkung,
b2.id,
b2.Buchungstag,
b2.Geldbetrag,
Abs(b2.Geldbetrag) as b2absgeldbetrag
FROM Buchungen b1, Buchungen b2
WHERE
b1absgeldbetrag = b2absgeldbetrag
and b1.id <> b2.id
and b1.buchungstag between b2.Buchungstag - 7 and b2.buchungstag
Die Abfrage läuft ewig. Ist der join zweier Tabellen per berechnetem Wert (Abs()) erlaubt?
Hat jemand Verbesserungsvorschläge für mich?

Geändert von semo (29. Aug 2011 um 23:32 Uhr)
  Mit Zitat antworten Zitat