Konto-Saldo mit dem Datensatz speichern

julia29

Erfahrenes Mitglied
Hi,

mit einer MySQL-Tabelle möchte ich Geldbeträge in Mitgliedskonten führen.
Mitglied führt Einzahlung durch, der sich ergebene neue Saldo wird berechnet und mit in den aktuellen Datensatz in ein Saldo-Feld gespeichert.
Mitglied erhält Leistungen, deren Betrag von seinem aktuellen Guthaben abgezogen wird. Der neue Saldo wird wieder neu berechnet und in das Saldo-Feld gespeichert.
In etwa wie ein Kontoauszug bei der Bank mit Saldo Alt, den Kontobewegungen und einem Saldo Neu.
Vorteil, ich kann den Saldo des letzten Datensatzes aufrufen und den Wert an den verschiedensten Stellen als Summe ausgeben.
Außerdem könnte bei umfangreichen Datensätzen der Rechenaufwand doch etwas zunehmen. Bei der von mir angedachten Lösung brauchen nur 2 Datensätze (der letze und der vorletzte DS) miteinander verglichen werden.

Gibt es in MySQL eine Möglichkeit die neue Summe zu errechnen und als festen Wert in den Datensatz zu speichern?
Wie kann ich da vorgehen?

mfg
Julia
 
Meinst du so was in der Art:

Code:
UPDATE tabelle SET saldo = saldo + betrag WHERE mitglied = 'abc'
Musst halt die Felder entsprechend benennen.
 
Hi yaslaw,

aber UPDATE ist doch für eine Änderung eines bereits bestehenden Datensatzes. Wenn Mitglied eine neue Einzahlung vornimmt sollte auch ein neuer Datensatz angelegt werden.
Beim MySQL Datums-Feld hatte ich mal eine Funktion gesehen wenn ein neuer Datensatz angelegt wird, wird auch gleich ein Timestamp eingetragen, ohne dieses Feld überhaupt anzusprechen. So eine Funktion als Summe.
 
Ah, jetzt versteh ich glaub

Also in etwa so (ist halt schwer zu sagen wenn man keinen Anhaltspunkt über die Struktur deiner Tabelle und deiner Applikation hat)

SQL:
INSERT INTO tabelle (userid, datum, buchung, saldo)
SELECT 
	'{$userId}' AS userid,
	{$datum} AS datum,
	{$buchung} AS buchung,
	SUM(buchung) + {$buchung} AS saldo 
FROM tabelle
WHERE userid = '{$userId}'
GROUP BY userid
 
Zuletzt bearbeitet von einem Moderator:
@yaslaw,
ja, so meinte ich das, für jede neue Buchung wird der neue Saldo gleich mit abgespeichert.
Will nachher mal sehen ob ich das so hinbekomme.
 
Klappt soweit alles schon ganz gut.
Nun habe ich noch weitere Felder, die ich ums verrecken nicht intigriert bekomme (feld1, feld2).
Egal, ob ich die weiteren Felder in den SELECT-Strang mit aufnehme

PHP:
INSERT INTO tabelle (userid, feld1, feld2, datum, buchung, saldo)

SELECT 
	'{$userId}' AS userid,
	{$feld1} AS feld1,
	{$feld2} AS feld2,
	{$datum} AS datum,
	{$buchung} AS buchung,
	SUM(buchung) + {$buchung} AS saldo 
FROM tabelle
WHERE userid = '{$userId}'
GROUP BY userid

oder so mit der VALUES-Zeile einbaue
PHP:
INSERT INTO tabelle (userid, feld1, feld2, datum, buchung, saldo)
VALUES('$feld1', '$feld2') 

SELECT 
	'{$userId}' AS userid,
	{$datum} AS datum,
	{$buchung} AS buchung,
	SUM(buchung) + {$buchung} AS saldo 
FROM tabelle
WHERE userid = '{$userId}'
GROUP BY userid

klappt aber nicht, Datensatz wird nicht abgespeichert.
Eine Fehlermeldung durch error_reporting(E_ALL);
wird jedoch auch nicht angezeigt.

Frage - wie kann ich weitere Felder intigrieren?
 
So wie in deinem ersten Beispiel. Sind die Felder Nummern oder Strings? Wenn es Strings sind, dann solltest du sie nocht mit '' umgeben
SQL:
'{$feld1}' AS feld1
 
Zuletzt bearbeitet von einem Moderator:
Zurück