Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Mysql - sumowanie inne
fcppl
post 3.10.2018, 08:11:45
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
trueblue
post 3.10.2018, 09:00:49
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Może tak:

SELECT suma rekordów przed datą z początku zakresu, a wartość kolumny data ustawiona na sztywno jako data z początku zakresu
UNION ALL
SELECT rekordy z zakresu
UNION ALL
SELECT suma rekordów po dacie z końca zakresu, a wartość kolumny data ustawiona na sztywno jako data z końca zakresu (lub inaczej, nie określiłeś co z rekordami po dacie końca)

a cały powyższy UNION jako podzapytanie, na którym dopiero uruchamiasz running sum.


--------------------
Go to the top of the page
+Quote Post
fcppl
post 3.10.2018, 09:09:54
Post #3





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

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


rekordy po dacie konca nie sa wazne, poprostu powinny byc anulowane/pominiete. Jezeli jest możliwośc mogę prosić o przykładowe zapytanie jak powinno wygladac według twoich wskazówek ?
Go to the top of the page
+Quote Post
trueblue
post 3.10.2018, 09:22:44
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
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
fcppl
post 3.10.2018, 10:22:28
Post #5





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

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


To rozwiązanie działa b.dobrze

Serdecznie dziękuję za pomoc.

Ten post edytował fcppl 3.10.2018, 10:34:27
Go to the top of the page
+Quote Post
StevDefs
post 27.08.2019, 07:26:34
Post #6





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 22.08.2019

Ostrzeżenie: (10%)
X----


Buy Generic Plavix In Us online pharmacy Risks Of Propecia Online Prescription Xenical Fat Blocker

Viagra Y Esteroides Dangers With Expired Cephalexin Discount isotretinoin viagra Buy Plavix

Buy Prescription Viagra Online Suche Viagra Ch Aleve cheapest cialis Northwestern Canada Drugs

Free Amoxicillin Canadian Health Mall priligy presentacion Viagra Kamagra Erfahrung Pastillas Cytotec Donde Las Venden Finasterid 5mg Rezeptfrei Kaufen

Discount Plavix Coupons Prednisolone Nextday buy cialis Order Orlistat Online
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 16:07