Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Suma wszystkich kwot z bazy
d.stp
post
Post #1





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/businesssmiley.png)

Go to the top of the page
+Quote Post
Mega_88
post
Post #2





Grupa: Zarejestrowani
Postów: 360
Pomógł: 34
Dołączył: 20.08.2011

Ostrzeżenie: (0%)
-----


"SELECT SUM(licznik) AS suma FROM wiersz" - można na przykład tak.

Ten post edytował Mega_88 21.01.2014, 18:53:10
Go to the top of the page
+Quote Post
d.stp
post
Post #3





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

Ostrzeżenie: (0%)
-----


Dzięki, o to chodziło (IMG:style_emoticons/default/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ć.
Go to the top of the page
+Quote Post
kujol
post
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

Ostrzeżenie: (0%)
-----


Chcesz usunąć wiersz z tabeli o id 2, czy zmienić któregoś wartość?
To powinno Ci wszystko wyjaśnić (IMG:style_emoticons/default/smile.gif)

webmade.org/kursy-online/kurs-mysql.php
Go to the top of the page
+Quote Post
d.stp
post
Post #5





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/biggrin.gif)

Zapytania znam dobrze, ale z pamięcią jest gorzej (IMG:style_emoticons/default/smile.gif)

Ten post edytował d.stp 21.01.2014, 21:52:49
Go to the top of the page
+Quote Post
kujol
post
Post #6





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

Ostrzeżenie: (0%)
-----


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

Go to the top of the page
+Quote Post
d.stp
post
Post #7





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

Ostrzeżenie: (0%)
-----


Czyli jednak trochę to skomplikowane (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/biggrin.gif)

Ten post edytował d.stp 21.01.2014, 22:42:12
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 13:51