Hi!
Bin gerade frisch im Board angekommen *wave*
Ich hab da ein kleines Problemchen mit SQL und meine Bücher helfen mir irgendwie nicht weiter, daher suche ich nun im Netz nach Hilfe.
Folgende Problemstellung:
Ausgangssituation sind drei Tabellen. Die Verknüpfung ist recht eindeutig und wohl leicht zu verstehen (hoffe ich).
Tabelle1: Zahlung (Spalten: Betrag, Vorgang)
Tabelle 2: Haupttabelle (Spalten: Vorgang)
Tabelle 3: Forderung (Spalten: Betrag, Vorgang)
Die Tabellen sind 1:n über die Haupttabelle verbunden. D.h. dort kommt jeder Vorgang nur einmal vor. In den Tabellen Zahlung und Forderung durchaus öfter.
Problemstellung:
Per SQL-Script sollen in den Tabellen Zahlung und Forderung pro Vorgang eine Summe gebildet werden und das Ergebnis soll so aussehen, dass ich zu jedem Vorgang eine Summe Zahlungen und eine Summe Forderungen ausgeworfen bekomme.
Hier mein Statement:
SELECT SUM(FORDERUNG.BETRAG) AS SummeForderung, SUM(ZAHLUNG.BETRAG) AS SUMMEZAHLUNG, HAUPTTABELLE.AKTENZEICHEN
FROM FORDERUNG, ZAHLUNG, HAUPTTABELLE
WHERE FORDERUNG.VORGANG = HAUPTTABELLE.AKTENZEICHEN
AND ZAHLUNG.AKTENZEICHEN = HAUPTTABELLE.AKTENZEICHEN
and HAUPTTABELLE.BEDINGUNG1='irgendwas'
GROUP BY HAUPTTABELLE.AKTENZEICHEN
Im Grunde funktioniert das Statement so auch.
Fälle bei denen jeweils EINE Forderung und nur EINE Zahlung existiert werden auch korrekt wiedergegeben.
Das Problem ist folgendes, wenn ich nun beispielsweise 2 Forderungen zu einem Vorgang habe wird die Forderung zwar korrekt aufsummiert, die entsprechende Zahlungssumme verdoppelt sich aber und andersrum. Habe ich drei Forderungen für einen Vorgang, so verdreifacht sich dadurch die Zahlungssumme. Mir leuchtet der Fehler soweit auch ein, nur weiss ich nicht, wie ich ihn beheben kann. Ich habe schon versucht, die beiden Summenbildungen als Sicht anzulegen und danach dann zusammenzubringen, aber das geht dann völlig in die Hose. Leider bin ich mit den JOIN-Operatoren noch nicht so vertraut und könnte mir vorstellen, dass man es darüber drehen kann....
Falls wer helfen kann,... ich wäre Euch echt dankbar!
Grüsse
Mirko
Bin gerade frisch im Board angekommen *wave*
Ich hab da ein kleines Problemchen mit SQL und meine Bücher helfen mir irgendwie nicht weiter, daher suche ich nun im Netz nach Hilfe.
Folgende Problemstellung:
Ausgangssituation sind drei Tabellen. Die Verknüpfung ist recht eindeutig und wohl leicht zu verstehen (hoffe ich).
Tabelle1: Zahlung (Spalten: Betrag, Vorgang)
Tabelle 2: Haupttabelle (Spalten: Vorgang)
Tabelle 3: Forderung (Spalten: Betrag, Vorgang)
Die Tabellen sind 1:n über die Haupttabelle verbunden. D.h. dort kommt jeder Vorgang nur einmal vor. In den Tabellen Zahlung und Forderung durchaus öfter.
Problemstellung:
Per SQL-Script sollen in den Tabellen Zahlung und Forderung pro Vorgang eine Summe gebildet werden und das Ergebnis soll so aussehen, dass ich zu jedem Vorgang eine Summe Zahlungen und eine Summe Forderungen ausgeworfen bekomme.
Hier mein Statement:
SELECT SUM(FORDERUNG.BETRAG) AS SummeForderung, SUM(ZAHLUNG.BETRAG) AS SUMMEZAHLUNG, HAUPTTABELLE.AKTENZEICHEN
FROM FORDERUNG, ZAHLUNG, HAUPTTABELLE
WHERE FORDERUNG.VORGANG = HAUPTTABELLE.AKTENZEICHEN
AND ZAHLUNG.AKTENZEICHEN = HAUPTTABELLE.AKTENZEICHEN
and HAUPTTABELLE.BEDINGUNG1='irgendwas'
GROUP BY HAUPTTABELLE.AKTENZEICHEN
Im Grunde funktioniert das Statement so auch.
Fälle bei denen jeweils EINE Forderung und nur EINE Zahlung existiert werden auch korrekt wiedergegeben.
Das Problem ist folgendes, wenn ich nun beispielsweise 2 Forderungen zu einem Vorgang habe wird die Forderung zwar korrekt aufsummiert, die entsprechende Zahlungssumme verdoppelt sich aber und andersrum. Habe ich drei Forderungen für einen Vorgang, so verdreifacht sich dadurch die Zahlungssumme. Mir leuchtet der Fehler soweit auch ein, nur weiss ich nicht, wie ich ihn beheben kann. Ich habe schon versucht, die beiden Summenbildungen als Sicht anzulegen und danach dann zusammenzubringen, aber das geht dann völlig in die Hose. Leider bin ich mit den JOIN-Operatoren noch nicht so vertraut und könnte mir vorstellen, dass man es darüber drehen kann....
Falls wer helfen kann,... ich wäre Euch echt dankbar!
Grüsse
Mirko