Autor | Zpráva | ||
---|---|---|---|
David 92 Profil * |
#1 · Zasláno: 11. 11. 2023, 00:57:25
Ahoj, řeším teď takové dilema:
mám datábazi a v ní: id, datum, stav, kurz, sazka datum - datum zápasu stav - výherní, proherní kurz - číslo sazka - cislo Potřeboval bych nyní vypsat datumy a k nim spočítat aktuální zisk, což je samo o sobe lehké, problém nastává s duplicidama. 01.11.2023 výherní +1000=> +1000 02.11.2023 výherní +500 => +1500 03.11.2023 proherní -1000 => +500 04.11.2023 proherní -1000 => -500 04.11.2023 výherní +1000 => +500 05.11.2023 výherní +1000 => +1500 $sql = dibi::fetchAll("SELECT id, datum, stav, kurz SUM(kurz*(sazka*500)-(sazka*500)) AS spocti_vyhru, SUM(sazka*500) AS spocti_prohru FROM zapasy WHERE (stav = '1' OR stav = '2') GROUP BY DATE(datum), stav ORDER BY datum ASC"); 04.11.2023 je duplicidní, ikdyž je použit GROUP BY datum a je to z toho důvodu, že ten den byla, jak výhra tak i prohra (zde bych potřeboval, aby to spočítalo výhru-prohru) tedy jen jeden záznam (04.11.2023 proherní, výherní -1000 +1000 => +500), lze toho nějak docílit? |
||
Kajman Profil |
#2 · Zasláno: 11. 11. 2023, 10:32:33
Mělo by jít např. něco takového...
SELECT datum, Sum(pocet_vyher) pocet_vyher, Sum(pocet_proher) pocet_proher, Sum(spocti_vyhru) spocti_vyhru, Sum(spocti_prohru) spocti_prohru FROM (SELECT Date(datum) datum, Count(*) AS pocet_vyher, 0 AS pocet_proher, Sum(kurz * sazka - sazka) AS spocti_vyhru, 0 AS spocti_prohru FROM zapasy WHERE stav = '1' GROUP BY Date(datum) UNION ALL SELECT Date(datum) datum, 0 AS pocet_vyher, Count(*) AS pocet_proher, 0 AS spocti_vyhru, Sum(sazka) AS spocti_prohru FROM zapasy WHERE stav = '2' GROUP BY Date(datum)) x GROUP BY datum ORDER BY datum |
||
David 92 Profil * |
#3 · Zasláno: 11. 11. 2023, 13:56:04
Díky vypadá, že funguje, jen asi nejsem schopen spočítat nyní aktuální zisk dle datumu.
v PHP pak mám kod: if($row_graf['stav'] == '1'){ $stav_konta = +$row_graf['spocti_vyhru']; } elseif($row_graf['stav'] == '2'){ $stav_konta = -$row_graf['spocti_prohru']; } else { $stav_konta = 0; } $aktualni_penize_pole[] = $stav_konta; $vysledek_komplet = implode(', ', (array)$aktualni_penize_pole); $aktualni_penize = array_sum($aktualni_penize_pole); echo $aktualni_penize; počítá to dobře, jen do doby, kde opět v jeden den je výhra i prohra >> prohru to ignoruje, jakmile je, ale jen jeden den ztrátový odečte to správně... pokud přidám zase GROUP BY datum,stav tak to počítá správně jak má, ale opět s dvojím datumem Moc díky |
||
Kajman Profil |
Před cyklem si dáte
$aktualni_penize = 0; $aktualni_penize = $aktualni_penize + $row_graf['spocti_vyhru'] - $row_graf['spocti_prohru']; echo $aktualni_penize; |
||
David 92 Profil * |
#5 · Zasláno: 11. 11. 2023, 15:02:55
Díky, vypadá, že funguje parádně :)
|
||
Časová prodleva: 11 měsíců
|
0