Autor | Zpráva | ||
---|---|---|---|
pito Profil |
Zdar,
Mám v databázi tabulku s počtem uživatelů. id day user view 1 2015.03.29 1 8 2 2015.03.30 33 36 3 2015.03.31 6 9 4 2015.04.01 5 34 5 2015.04.02 2 5 6 2015.04.03 9 39 7 2015.04.04 3 16 Chci se zeptat jak udělám tabulku a v ní vypsané měsíce a součet uživatelů na každý měsíc př. Uživat: 0 0 40 19 Měsíc: Leden Únor Březen Duben ........ |
||
Petr Ká Profil |
#2 · Zasláno: 11. 5. 2015, 13:13:38
Naslepo; zkus:
SELECT SUM(user), MONTH(day) FROM _tabulka_ GROUP BY MONTH(day) |
||
blaaablaaa Profil |
#3 · Zasláno: 11. 5. 2015, 13:14:33
SUM uzivatelu + GROUP BY dle mesice a roku a ziskas v jednom radku vzdy mesic a pocet uzivatelu
|
||
Petr Ká Profil |
blaaablaaa:
Jestli i podle roku, použil bych spojení: SELECT SUM(user) AS pocet, CONCAT(MONTH(day),".",YEAR(day)) AS mesic FROM _tabulka_ GROUP BY CONCAT(MONTH(day),".",YEAR(day)) Výsledkem by bylo: mesic | pocet 01.2015 | 12 02.2015 | 25 03.2015 | 40 |
||
pito Profil |
#5 · Zasláno: 11. 5. 2015, 16:39:08
zapsal jsem to tak ale někde je asi chyba v zápisu si myslím,ale nemůžu jí najít :D :(
$vyber = MySQL_Query("SELECT SUM(user) AS pocet, CONCAT(MONTH(day),".",YEAR(day)) AS mesic FROM chilli_stats_1_Day GROUP BY CONCAT(MONTH(day),".",YEAR(day)")or die(mysql_error()); while ($zaznam2=MySQL_Fetch_Array($vyber)){ $dataset1[] = array($zaznam2['mesic'],); $dataset2[] = array($zaznam2['pocet']); echo $dataset1; echo $dataset2; } |
||
Taps Profil |
#6 · Zasláno: 11. 5. 2015, 16:41:05
pito:
$vyber = MySQL_Query("SELECT SUM(user) AS pocet, CONCAT(MONTH(day),".",YEAR(day)) AS mesic FROM chilli_stats_1_Day GROUP BY CONCAT(MONTH(day),".",YEAR(day)")or die(mysql_error()); while ($zaznam2=MySQL_Fetch_Array($vyber)){ echo $zaznam2['mesic'].' - '.$zaznam2['pocet'].'<br>'; } |
||
juriad Profil |
#7 · Zasláno: 11. 5. 2015, 16:46:45
Petr Ká:
Proč takové harakiri s řetězci? SELECT SUM(user) AS pocet, YEAR(day) AS rok, MONTH(day) AS mesic FROM tabulka GROUP BY YEAR(day), MONTH(day) ORDER BY YEAR(day), MONTH(day) Měsíc ve tvaru "5.2015" si pak zformátuješ v PHP. |
||
pito Profil |
#8 · Zasláno: 11. 5. 2015, 17:13:17
ono mi to,ale vypsalo jen pátý měsíc jak nastavím aby to vypsalo posledních 12 měsíců?
LIMITEM? |
||
Keeehi Profil |
#9 · Zasláno: 11. 5. 2015, 17:16:49
pito:
Limitem maximálně tak něco omezíš ale nic nepřidáš. A jsi si jistý, ze máš v databázi záznamy i z jiných měsíců než jen z května? |
||
juriad Profil |
#10 · Zasláno: 11. 5. 2015, 17:16:58
To proto, že sloupec day není DATE, ale je to nějaký VARCHAR. Pak se nemůžeš divit, že to nefunguje. Datumy do databáze nikdy neukládej jako VARCHAR.
Lze sice napsat dotaz i tak, ale ohromně ošklivý a velice pomalý. A rozhodně jej zde nebudu psát, abych někoho nenavedl. |
||
pito Profil |
#11 · Zasláno: 11. 5. 2015, 23:33:54
Keeehi:
ano mám tam i jiné měsíce juriad: Měl jsem tam Varchar, ale změnil jsem to na DATE a stejně mi to ukazuje pořád jen ten pátý měsíc |
||
Keeehi Profil |
#12 · Zasláno: 11. 5. 2015, 23:51:57
pito:
A když ten dotaz vezmeš a pustíš ho ručně, tak ti to taky vrátí jen jeden výsledek? |
||
pito Profil |
#13 · Zasláno: 13. 5. 2015, 21:54:16
Keeehi:
„A když ten dotaz vezmeš a pustíš ho ručně“ trochu nerozumím |
||
lionel messi Profil |
#14 · Zasláno: 13. 5. 2015, 22:58:23
pito:
> Keeehi: > „A když ten dotaz vezmeš a pustíš ho ručně“ > trochu nerozumím Napríklad v PHPMyAdmin (alebo akomkoľvek programe na prácu s databázou. |
||
pito Profil |
tak jsem tam přidal čtvrtý měsíc a vypsalo mi to čtvrtý měsíc ty další měsíce už ne
tak je to funkční. Super. díky Ještě když chci zobrazit jen prvních 12 měsíců tak to provedu tím limitem že? |
||
Taps Profil |
#16 · Zasláno: 14. 5. 2015, 17:16:22
pito:
ano, omezení výpisu provedeš limitem |
||
Časová prodleva: 5 dní
|
|||
pito Profil |
#17 · Zasláno: 20. 5. 2015, 01:26:37
nastavil jsem ten
LIMIT a vypisuje mi to nějak divně
chci aby mi to vypsalo posledních 12 měsíců a místo toho mi to sice vypíše 12 měsíců,ale nejsou popořadě jsou nějak přeházené. Má být vypsano: červen červenec srpen září říjen listopad prosinec leden únor březen duben květen 0 prosinec listopad říjen září srpen červenec červen květen duben prosinec listopad tak to mám zapsané: $vyber = MySQL_Query("SELECT SUM(user) AS pocet, YEAR(day) AS rok, MONTH(day) AS mesic FROM chilli_stats_1_Day GROUP BY YEAR(day), MONTH(day) ORDER BY YEAR(day), MONTH(day) DESC LIMIT 12")or die(mysql_error()); |
||
juriad Profil |
#18 · Zasláno: 20. 5. 2015, 08:49:12
pito:
Ono to řadí tak, jak jsi tomu řekl. Napřed jsou údaje za rok 2014 a pak údaje za rok 2015. Jednotlivé měsíce v těch rocích jsou od konce (prosinec až leden). Na toto bys přišel, pokud by sis vypsal nejen měsíc, ale i rok. Změň tedy řazení: ORDER BY YEAR(day), MONTH(day) ORDER BY YEAR(day) ASC, MONTH(day) ASC Není mi však jasné, kde se tam vzala ta 0. Nejspíš někde jinde (u výpisu) budeš mít ještě nějakou chybku. |
||
pito Profil |
ASC není správne ono to vypíše od roku 2010 kde mám začátek přístupů. Když jsem to změnil na DESC tedy:
ORDER BY YEAR(day) DESC, MONTH(day) DESC tak to vypsalo následovně:
(dál jsem si tam i roky) 5,2015 4,2015 3,2015 2,2015 1,2015 12,2014 11,2014 10,2014 9,2014 8,2014 7,2014 6,2014 Nejnovější měsíc by měl být úplně v pravo neboť ty údaje dávat dl do grafu line |
||
juriad Profil |
Aha, takže ty chceš posledních 12 měsíců vypsaných vzestupně. OK. Dej tedy oběma DESC a pak to obal ještě jedním dotazem:
SELECT * FROM ( SELECT SUM(user) AS pocet, YEAR(day) AS rok, MONTH(day) AS mesic FROM chilli_stats_1_Day GROUP BY YEAR(day), MONTH(day) ORDER BY YEAR(day) DESC, MONTH(day) DESC LIMIT 12 ) x ORDER BY rok ASC, mesic ASC x je povinný alias, který může být cokoli. V tomto případě se nepoužije.
|
||
pito Profil |
#21 · Zasláno: 20. 5. 2015, 14:59:34 · Upravil/a: pito
Suprové. Dobry si juriad
Dík ještě maličkost dál jsem si ještě statistiku roků. Tedy spočítá počet návštěvníku za daný rok a vypíše. Jenomže se mi na začátku objeví zas ta nula Mně to započítává od 11.4.2010 a výpis roku mám takový: počet: 0 201 220 358 380 458 258 rok: 0 2010 2011 2012 2013 2014 2015 |
||
pito Profil |
#22 · Zasláno: 20. 5. 2015, 19:18:35
seknul jsem se na názvy měsíců.
while ($zaznam2=MySQL_Fetch_Array($vyber)){ setlocale(LC_ALL, 'czech'); $dataset1[] = array(strftime('%B', strtotime($zaznam2['mesic']))); $dataset2[] = array($zaznam2['pocet']); a výsledek je, že tam mám všude napsané měsíc leden |
||
Časová prodleva: 9 let
|
0