Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Suma wszystkich kwot z bazy
Forum PHP.pl > Forum > Przedszkole
d.stp
Mam tabelę kwoty a w niej pola:

id | kwota | data

i rekordy:

1 | 2.00 | data
2 | 3.00 | data
3 | 1.00 | data

czyli wychodzi 6.00

Teraz chciałbym policzyć sumę kwota wszystkich rekordów jakie są w tej tabeli.

Pewnie to jest proste, ale wypadło mi z głowy businesssmiley.png

Mega_88
"SELECT SUM(licznik) AS suma FROM wiersz" - można na przykład tak.
d.stp
Dzięki, o to chodziło wink.gif

Mam też następny problem, a w zasadzie brak pomysłu związanego z tym wyżej.

Tak jak wyżej mam w tabeli takie rekordy:

1 | 2.00 | data
2 | 3.00 | data
3 | 1.00 | data

I teraz chcę zrobić, aby każdy gracz mógł zrobić wypłatę. Sumę punktów na koncie zliczam sobie tym zapytaniem co podał Mega_88 wyżej, ale jak teraz zrobić wypłatę? Powiedzmy mam te 6.00 goldów, chcę wypłacić 3.00 goldy. Nie mam pomysłu zupełnie na to...

Jak to co napisałem jest niezrozumiałe to postaram się to inaczej wytłumaczyć.
kujol
Chcesz usunąć wiersz z tabeli o id 2, czy zmienić któregoś wartość?
To powinno Ci wszystko wyjaśnić smile.gif

webmade.org/kursy-online/kurs-mysql.php
d.stp
Nie o to mi chodzi.

Jest tabela zarobki a w niej pola:

id | kwota | data | id_usera

i kilka rekordów:

1 | 2.00 | 20.05.2014 | 1
1 | 3.00 | 20.05.2014 | 2
1 | 2.00 | 20.05.2014 | 1
1 | 5.00 | 20.05.2014 | 1
1 | 3.00 | 20.05.2014 | 1

I zliczam sobie ile dany user ma zarobionych goldów i wyświetlam:

SELECT SUM(kwota) FROM zarobki WHERE id_usera = 1

Zarobione: 12.00 goldów

Podstrona WYPŁATA a w niej zwykły formularz z inputem do wpisania kwoty i submit. Powiedzmy, że chcę wypłacić 10 goldów. Wpisuję w formularzu 10.00 i klikam wypłać.

Po naciśnięciu przycisku skrypt ma odjąć tą ilość. I tutaj pojawia się problem bo nie wiem jak to zrobić, a dokładniej nie wiem jakiego zapytania mam użyć. Nie mogę usunąć tych rekordów bo chcę wyświetlać archiwum zarobków, więc tabela zarobki nie może się zmienić.

Myślałem o takich cudach jak dopisanie w tabeli USERS pola AKTUALNE_ZAROBKI, tylko teraz nie wiem jak tam przekazać aktualnie zarobione goldy, bo rekordy w tabeli ZAROBKI dodają się dość często. I ogólnie to chyba nie najlepszy pomysł...

Nie wiem czy to jest aż tak skomplikowane czy po prostu wcześniej źle to opisałem, ale kompletnie na tym poległem biggrin.gif

Zapytania znam dobrze, ale z pamięcią jest gorzej smile.gif
kujol
Ja bym zrobił tak, że tą tabele zostawiasz i to niech będzie te twoje archiwum, a tworzysz kolejna tabele i tam masz te same pola lecz wierszy tylko po 1 dla gracza.
I w danym masz:

1 | 12.00 | 20.05.2014 | 1
2 | 8.00 | 25.05.2014 | 2
3 | 2.00 | 10.06.2014 | 3

Czyli, id, całe posiadane gold gracza, data zmiany salda, id gracza

Operacji dokonujesz tylko na tej tabeli- aktualizując ją

Pobierasz zapytaniem saldo gracza, odejmujesz od niego podaną kwotę i aktualizujesz.

Albo jest 2 możliwość ( nie jestem pewien czy będzie działać ).
W tej tabeli, którą teraz masz dodajesz nowy rekord z kwotą ujemną dla danego gracza i przy sumowaniu powinno Ci to odjąć. Odrazu będzie archiwum zarobków jaki wypłat, np.

1 | 2.00 | 20.05.2014 | 1
2 | 3.00 | 20.05.2014 | 2
3 | 2.00 | 20.05.2014 | 1
4 | 5.00 | 20.05.2014 | 1
5 | 3.00 | 20.05.2014 | 1
6 | -10.00 | 20.05.2014 | 1

d.stp
Czyli jednak trochę to skomplikowane wink.gif

Przeanalizowałem dokładnie podany przez ciebie 1 sposób i chyba to będzie najlepsze rozwiązanie. Te 2 rozwiązanie też by zadziałało, ale nie mogę go zastosować bo będzie bałagan, a poza tym to nie najlepszy pomysł, bo chcę mieć historię wypłat (czyli ilość goldów, data, ip i sporo innych) i po prostu zrobi się śmietnik, a zakładam że tych rekordów będzie bardzo dużo i wolałbym tego uniknąć

Może ktoś inny ma jeszcze jakiś pomysł?

Dzięki wielkie kujol, później dam plusa biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.