Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Mysql - sumowanie inne
fcppl
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


Witam,

Mam tabele:

id data kwota waluta komentarz

1 | 2018-07-11 | 30 | PLN | AAA
2 | 2018-07-12 | 40 | PLN | BBB
3 | 2018-07-13 | 20 | PLN | CCC
4 | 2018-07-14 | 10 | PLN | DDD
5 | 2018-07-15 | 15 | PLN | EEE

Zapytaniem :

  1. SELECT t.id, t.DATA, t.kwota, t.waluta, t.komentarz, @running_total := @running_total + t.kwota AS stan_kasy FROM kasa t JOIN (SELECT @running_total := 0) r WHERE t.waluta="PLN" ORDER BY t.id ASC;


Otrzymuję:

id data kwota waluta komentarz | stan kasy

1 | 2018-07-11 | 30 | PLN | AAA | 30
2 | 2018-07-12 | 40 | PLN | BBB | 70
3 | 2018-07-13 | 20 | PLN | CCC | 90
4 | 2018-07-14 | 10 | PLN | DDD | 100
5 | 2018-07-15 | 15 | PLN | EEE | 115

Do tego momentu wszystko działa dobrze. Ale jak wybiorę zakres dat zaptaniem:

  1. SELECT t.id, t.DATA, t.kwota, t.waluta, t.komentarz, @running_total := @running_total + t.kwota AS stan_kasy FROM kasa t JOIN (SELECT @running_total := 0) r WHERE t.waluta='PLN' AND t.DATA BETWEEN '2018-07-13' AND '2018-07-14' ORDER BY t.id ASC;


Otrzymam wynik:

id data kwota waluta komentarz | stan kasy

3 | 2018-07-13 | 20 | PLN | CCC | 20
4 | 2018-07-14 | 10 | PLN | EEE | 30

A chciałem uzyskać cos takiego: Czyli pozycja ID 1, 2 laczy się razem i sumuje swoj wynik i jako ID 2, później jest ID 3 i 4.

2 | 2018-07-13 | 70 | PLN | xxx | 70
3 | 2018-07-13 | 20 | PLN | CCC | 90
4 | 2018-07-14 | 10 | PLN | EEE | 100

Ten post edytował fcppl 3.10.2018, 08:16:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 807
Pomógł: 1828
Dołączył: 11.03.2014

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


  1. SELECT tmp.DATA, tmp.kwota, tmp.waluta, tmp.komentarz, @running_total := @running_total + tmp.kwota AS stan_kasy
  2. FROM(
  3. SELECT '2018-07-13' AS DATA, SUM(t.kwota) AS kwota, 'PLN' AS waluta,'' AS komentarz FROM kasa AS t WHERE t.data<'2018-07-13' AND t.waluta='PLN'
  4. UNION ALL
  5. SELECT t.DATA, t.kwota, t.waluta, t.komentarz FROM kasa AS t WHERE t.waluta='PLN' AND t.DATA BETWEEN '2018-07-13' AND '2018-07-14'
  6. ) AS tmp, (SELECT @running_total := 0) AS rs
  7. ORDER BY tmp.DATA;

Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 12:04