BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!

DANKE >><< DANKE

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

Problem beim Subtrahieren zweier Summen

BASE ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit OpenOffice.org zu bearbeiten.
Antworten
Benutzeravatar
FeuerwehrmannMax
Beiträge: 2
Registriert: So 31. Jul 2016, 17:32
Wohnort: Münsing in Oberbayern
Kontaktdaten:

Problem beim Subtrahieren zweier Summen

Beitrag von FeuerwehrmannMax » So 31. Jul 2016, 20:09

Guten Abend zusammen,

nach langem Grübeln und Kopfzerbrechen und zig Lösungsversuchen wende ich mich nun mit der Hoffnung auf eine Lösung an euch.

Ich habe mir eine Datenbank erstellt, mit der ich mir ein wenig die Verwaltung meiner Spardosen erleichtern will.

Diese besteht aus zwei Tabellen: Tabelle Nummer 1 heißt "Einzahlungen"; Tabelle Nummer 2 Abhebungen.
In den beiden Tabellen sind jeweils alle Einzahlungen wie auch Abhebungen eingetragen, die Spalte mit der Überschrift "Betrag" (in beiden Tabellen gleich) habe ich mit "Numeric" und 2 Nachkommastellen vordefiniert.

Die restlichen Spalten dienen der Nummerierung, dem Datum und sonstigen Anmerkungen.

Um mir nun den den "Aktuellen Kontostand" anzeigen zu lassen, habe ich mir folgende Abfrage geschrieben:

Code: Alles auswählen

SELECT SUM( "Einzahlungen"."Betrag" ) - ( "Abhebungen"."Betrag" ) AS "Aktueller Kontostand" 
FROM "Einzahlungen", "Abhebungen"
Funktioniert soweit zwar, aber nur, wenn ich in der Tabelle für die Abhebungen nur einen Datensatz eingetragen habe. Bei 2 Datensätzen kommen bereits viel zu hohe Werte raus (das Programm liefert mir als Wert 399, eigentlich sollte es den Wert 158 liefern).

Auch folgender Lösungsversuch bringt leider nichts:

Code: Alles auswählen

SELECT SUM(( "Einzahlungen"."Betrag" ) - ( "Abhebungen"."Betrag" )) AS "Aktueller Kontostand" 
FROM "Einzahlungen", "Abhebungen"
Hierbei kommt als Wert -28 raus. Also auch falsch.

Auch mit einem Union habe ich es schon probiert (mit negativen Zahlen in der Abhebungen-Tabelle), leider noch fatalere Werte.
(Für diejenigen, die es interessiert: Idee meines Freundes, der sich schon besser mit SQL auskennt, war, dass man quasi die Summe aus der Einzahlungstabelle mit der negativen Summe aus der Abhebungentabelle vergleicht und somit den richtigen Wert herausbekommt)

Auch wenn ich die Spaltentyp zu "Integer" umdefiniere, funktioniert es nicht.

Daher nun meine Frage: Weiß jemand von euch, was ich falsch mache, bzw. wo das Problem liegen könnte?
Solltet ihr die Datenbank von mir benötigen, einfach Bescheid sagen, dann lade ich sie mit hoch.

Schon mal vielen Dank im Voraus,
mit freundlichen Grüßen,
Max
Wenn du tot bist, weißt du nicht, dass du tot bist.
Nur für dein Umfeld ist es hart.
Genauso ist es wenn du blöd bist!

pitzy
Beiträge: 58
Registriert: Do 17. Mai 2012, 11:55

Re: Problem beim Subtrahieren zweier Summen

Beitrag von pitzy » Mo 1. Aug 2016, 00:02

Ich bin selbst Anfänger...
aber würde schreiben
SELECT SUM( "Einzahlungen"."Betrag" ) - SUM( "Abhebungen"."Betrag" ) ...

Allerdings bewundere ich Deine Adressierung "Einzahlungen.Betrag" usw. weil ich das eher in der Tabellenkalkulation als funktionierend gefunden hätte. In SQL wird die jeweilige Tabelle doch mit "from" angefügt.

Code: Alles auswählen

SELECT SUM( "Einzahlungen"."Betrag" ) - SUM( "Abhebungen"."Betrag" ) AS "Aktueller Kontostand"
FROM "Einzahlungen", "Abhebungen"
wäre m.W. richtiger. Allerdings habe ich bei einer meiner Datenbanken Deine Programmierung versucht und gefunden, dass völliger Quatsch rauskam als ich mit zwei Tabellen arbeitete. Mit nur einer ging es bestens. Warum also die Abhebungen in einer separaten Tabelle anstelle einer separaten Spalte?

Aber zurück zum BUG: Was hier falsch läuft kannst Du sofort sehen, wenn Du das AS "Aktueller Kontostand" fortläßt und F5 drückst. Dann steht nämlich im Kopf der Tabelle, dass er angeblich alles aus der ersten Tabelle nähme, obwohl die Spalten gar nicht in beiden Tabellen gleichlautend vorhanden sind (bei mir).

Also hat das nichts mit der subtraktion zu tun, sondern mit der fehlerhaften Abarbeitung in Abfragen zweier Tabellen in einer DB, also ein neuer Thread/Betreff
win7pro / Avira / AOO 4.1.3 / LO 4.4.7.2

Benutzeravatar
FeuerwehrmannMax
Beiträge: 2
Registriert: So 31. Jul 2016, 17:32
Wohnort: Münsing in Oberbayern
Kontaktdaten:

Re: Problem beim Subtrahieren zweier Summen

Beitrag von FeuerwehrmannMax » Mo 1. Aug 2016, 11:56

Hallo,
danke erstmal für die Antwort.

Dein 1. Vorschlag war ja:

Code: Alles auswählen

SELECT SUM( "Einzahlungen"."Betrag" ) - SUM( "Abhebungen"."Betrag" ) AS "Aktueller Kontostand"
FROM "Einzahlungen","Abhebungen"
Als Ergebnis schmeißt mir das Programm wieder - 28 raus, also auch falsch.

Die Adressierung wie z.B. "Einzahlungen"."Betrag" sind übrigens schon sinnvoll, da das Programm ja nicht weiß, welche Spalte es als erstes summieren soll und dann somit auch nicht weiß was es wovon subtrahieren soll.
Lässt man die Adressierungen weg, kommt null raus.

Um noch darauf zurückzukommen, was er anzeigt, wenn man das AS "Aktueller Kontostand" weglässt:
Bei mir zeigt er dann genau das an:

Code: Alles auswählen

SELECT SUM( "Einzahlungen"."Betrag" ) - ( "Abhebungen"."Betrag" )
Nimmt also nicht ALLES aus der ersten Tabelle, sondern nur die Spalte "Betrag"

Bin jetzt mal deinem Rat gefolgt und habe alles in eine Tabelle gepackt, jetzt funktioniert es bestens, danke dir!
Ich hab mich beim Aufbau der DB halt für 2 Tabellen entschieden, um besser den Überblick zu behalten. Aber wenn es so geht, passt's ja auch.

Dann nochmals danke dir!

Mit freundlichen Grüßen,
FeuerwehrmannMax
Wenn du tot bist, weißt du nicht, dass du tot bist.
Nur für dein Umfeld ist es hart.
Genauso ist es wenn du blöd bist!

Antworten