![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Mam zapytanie które zwraca mi mniej więcej taki wynik
Kod id | nazwa | ile
---+-----------------+---- 1 | poniedziałek | 1 2 | wtorek | 3 3 | środa | 5 A teraz chciałbym przy pomocy jednego zapytania w każdym z rekrodów otrzymać wartość sumującą wszystkie poprzednie pola ile (wraz z aktualnym) np. Kod id | nazwa | ile | wynik
---+-----------------+------+---- 1 | poniedziałek | 1 | 1 2 | wtorek | 3 | 4 3 | środa | 5 | 9 Maiłem nadzieję, że wystrczy zapytanie typu: [sql:1:eb3e8c2ddf] SELECT id, nazwa, ile @wynik := ile + if( @wynik , @wynik , 0 ) FROM `tabela`[/sql:1:eb3e8c2ddf] jednak to nie to. Can You help me? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 6.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Bo ja sprawdzalem propozycje adwola, spenalzo i one nie dzialaly (tzn. suma sie nie kumulowala), a "moim" sposobem poszlo i zliczylo tak jak chciales.
No właśnie jest to ciekawe, bo tak nie działa: Kod mysql> select @a;
+------+ | @a | +------+ | NULL | +------+ 1 row in set (0.00 sec) mysql> SELECT id, nazwa, ile, if(@a IS NOT null,@a:=@a+ile,@a:=ile) AS wynik from deyv; +------+--------------+------+-------+ | id | nazwa | ile | wynik | +------+--------------+------+-------+ | 1 | poniedzialek | 1 | 1 | | 2 | wtorek | 3 | 3 | | 3 | sroda | 5 | 5 | +------+--------------+------+-------+ 3 rows in set (0.00 sec) ale tak to już pójdzie: Kod mysql> select @a:=null;
+----------+ | @a:=null | +----------+ | NULL | +----------+ 1 row in set (0.00 sec) mysql> SELECT id, nazwa, ile, if(@a IS NOT null,@a:=@a+ile,@a:=ile) AS wynik from deyv; +------+--------------+------+-------+ | id | nazwa | ile | wynik | +------+--------------+------+-------+ | 1 | poniedzialek | 1 | 1 | | 2 | wtorek | 3 | 4 | | 3 | sroda | 5 | 9 | +------+--------------+------+-------+ 3 rows in set (0.00 sec) Oba przykłady były robione niezależnie w osobnych sesjach. Nie rozumiem, dlaczego jawne zainicjowanie zmiennej na NULL daje dobry wynik, skoro w/g manuala: Cytat Variables don't have to be initialised. They contain NULL by default and can store an integer, real, or string value.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 22:43 |