Autor | Zpráva | ||
---|---|---|---|
danhill Profil |
Ahoj,
prosím potřebuji pomoci s dotazem do databáze. Mám tabulku [table] (date,code,) code je jedinečný, ale date se může opakovat. A já potřebuji podklady pro vytvoření grafu. Tedy nějaké pole, kdy ke každému datu v table přičtu počet code. Zkusím uvést příklad. Table obsahuje tyto data: 2013-05-09 ; 23XD1 2013-05-09 ; 23XD2 2013-05-09 ; 23XD3 2014-10-29 ; 23XD4 2014-10-29 ; 23XD5 2015-05-20 ; 23XD6 Výsledek by měl vypadat asi takto ['2013-05-09', '3'],['2014-10-29', '5'],['2015-05-20', '6'] Předem moc děkuji za pomoc. |
||
Alphard Profil |
V SQL se blbě dělá to postupné přičítání. Viděl bych to na
count(code) + group by date + order by date a na straně aplikace to posčítat.
Jestli trváte na SQL řešení, odkáži vás na stackoverflow.com/a/2563940. |
||
danhill Profil |
Ne ne, určitě netrvám na SQL řešení.
Klidně to může být více dotazů + php a vypsát to do array... Jen uplně nevím jak na to,no . |
||
Alphard Profil |
#4 · Zasláno: 7. 2. 2016, 00:06:04
Já jsem ten jednodušší způsob napsal téměř celý
select `date`, count(code) pocet from tabulka group by `date` order by `date` To odkazované řešení provádí celý výpočet na úrovni SQL, a to buď pomocí korelovaného poddotazu, nebo proměnných. |
||
danhill Profil |
#5 · Zasláno: 7. 2. 2016, 01:57:52
jaj, moc děkuji, to by mohlo fungovat.
Zkusím se s tím poprat a dám vědět. Každopádně mockrát děkuji. |
||
Časová prodleva: 6 dní
|
|||
danhill Profil |
#6 · Zasláno: 13. 2. 2016, 03:09:54
Stejně nemůžu přijít na to jak ty pole posčítat.
Mám SQL podle vzoru výše uvedeného: SELECT EXTRACT(YEAR FROM date) AS datum, count(code) pocet from table group by `datum`ORDER BY `date` $i = 1; foreach($query as $row) { $chart[$i++] = array( 'datum'=>$row["datum"], 'pocet'=>$row["pocet"]); } Array ( [1] => Array ( [datum] => 2013 [pocet] => 6844 ) [2] => Array ( [datum] => 2014 [pocet] => 848 ) [3] => Array ( [datum] => 2015 [pocet] => 1602 ) [4] => Array ( [datum] => 2016 [pocet] => 310 ) ) A z pole už si data pro graf vyzobu třeba nějak takto: foreach($chart as $row1) { echo ("['".$row1['datum']."', ".$row1['pocet']."],"); } No ale pořád mi uniká, jak ty počty mám sčítat ... Tedy aby $chart[1]['pocet'] = 6844 $chart[2]['pocet'] = 7692 $chart[3]['pocet'] = 9294 ... |
||
Alphard Profil |
#7 · Zasláno: 13. 2. 2016, 10:14:52
$sum = 0; foreach($chart as $row1) { $sum += $row1['pocet']; echo ("['".$row1['datum']."', ".$sum."],"); } |
||
danhill Profil |
#8 · Zasláno: 13. 2. 2016, 10:41:24
Wooooow ... Moooc děkuji :) ... Paráda. Chodí krásně ...
|
||
Časová prodleva: 7 let
|
0