![]() |
Datenbank: MySQL • Version: 5.x • Zugriff über: SciBit Komponenten Direkt
MySQL Summen - Listen bilden
Hallo Zusammen, an alle (My)SQL freaks... ;-)
Ich habe folgende Problemstellung: Datum Nr Betrag Summe (Sortiert nach Datum,Nummer) Eine einfache Datenbank... Leider mit recht vielen Datensätzen. In diese Liste sollen an beliebigen Stellen (Datum) Datensätze eingefügt/gelöscht werden oder Betrag die in der List stehen sollen verändert werden. Aufgabenstellung ist, dass "augenblicklicht" alle Summen der folgenden Datensätze wieder den "richtigen" Wert haben. Was ist hierfür der beste Weg? Grüsse Mavarik :mrgreen: |
Re: MySQL Summen - Listen bilden
Mein Vorschlag:
Redundante Tabelle die diese Summenwerte beinhalten und ein Trigger auf die ursprüngliche Tabelle der dann die Summenwerte in der redundanten Tabelle aktualisiert. |
Re: MySQL Summen - Listen bilden
Hallo Mavarick
Das kannst du über ein Update-Statement realisieren. Das müsste dann ungefähr so aussehen:
SQL-Code:
Wenn ich es richtig verstanden habe, hast du für jeden Datensatz die Summe der Beträge
UPDATE tabelle SET summe = (SELECT SUM(Betrag) FROM tabelle) WHERE 1=1;
aller Datensätze gespeichert?! In diesem Fall solltest du deine Tabellenstruktur nochmals überdenken. (Es sei denn du speicherst die Summe aus Performancegründen :wink: ) |
Re: MySQL Summen - Listen bilden
Zitat:
1. Nicht verstanden :stupid: 2. Wie und was bringt eine 2. Tabelle :stupid: Mavarik :stupid: |
Re: MySQL Summen - Listen bilden
Zitat:
Man könnte das mit einem Kontoauszug vergleichen, nur das der sich laufend ändert... Es soll jeder Betrag's Eintrag den Saldo bis zu diesem Tag mitführen. Mavarik |
Re: MySQL Summen - Listen bilden
dann eben so:
SQL-Code:
UPDATE tabelle t1 SET t1.summe = (SELECT SUM(t2.Betrag) FROM tabelle t2 WHERE t2.datum <= t1.datum AND t2.nr < t1.nr) WHERE 1=1;
|
Re: MySQL Summen - Listen bilden
Also entweder verstehe ich es nicht mit t1 und t2 oder ich drücke mich falsch aus.
Hier nochmal ein Beispiel:
SQL-Code:
Wenn ich die -50,00 vom 02.01.2000 auf + 50 ändere müssen alle Datensätze danach
01.01.2000 +100,00 +100,00
02.01.2000 - 50,00 + 50,00 03.01.2000 -300,00 -250,00 04.01.2000 +100,00 -150,00 05.01.2000 +100,00 - 50,00 06.01.2000 +100,00 + 50,00 um den Betrag von 100,00 geändert werden. Mavarik |
Re: MySQL Summen - Listen bilden
Ich hab von Triggern in MySQL keine Ahnung, aber möglicherweise könnte das so funktionieren:
SQL-Code:
new.Saldo = old.Saldo + (new.Betrag - old.Betrag);
UPDATE Tabelle SET Saldo = Saldo + (new.Betrag - old.Betrag) WHERE Datum > new.Datum; |
Re: MySQL Summen - Listen bilden
Zitat:
Mavarik |
Re: MySQL Summen - Listen bilden
t1 & t2 sind nur aliase für die tabelle, weil die selbe Tabelle 2 mal verwendet wird.
das Updatestatement würde alle Summen(Salden) der Tabelle aktualisieren. Das geht sicherlich auch performanter, aber das Beispiel ist auch nur als Denkanstoß gedacht :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz