Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

GROUP BY – jak nastavit

Martiz
verified
rating uzivatele
(8 hodnocení)
15. 10. 2012 13:52:00
Zdravím,
nemůžu přijít na to, jak vypsat pocet záznamu pres mysql_result a ne pres mysql_numrows:
Kdyz misto SELECT p_id vlozim SELECT count(p_id) tak mi to vzdy vrati 1. Kdyz zase odstranim GROUP BY p_id, tak mi to vyhodi napr. u produktu se zarazenim do 4 kategorií 4 zaznamy s jednim produktem.
Dekuji za radu.
15. 10. 2012 13:52:00
https://webtrh.cz/diskuse/group-by-jak-nastavit/#reply819903
Jiří Matějka
verified
rating uzivatele
(23 hodnocení)
15. 10. 2012 13:56:50
Což takhle:
SELECT p_id, COUNT(*)
...
GROUP BY p_id
15. 10. 2012 13:56:50
https://webtrh.cz/diskuse/group-by-jak-nastavit/#reply819902
hm
verified
rating uzivatele
(20 hodnocení)
15. 10. 2012 13:57:25
ale jde o to co chces vypsat, tohle ti spocte celkovy pocet zaznamu, matejkovo reseni ti vypise v kolika je kategoriich kazdy jednotlivy produkt
15. 10. 2012 13:57:25
https://webtrh.cz/diskuse/group-by-jak-nastavit/#reply819901
Martiz
verified
rating uzivatele
(8 hodnocení)
15. 10. 2012 14:09:49
Potrebuji celkovy pocet zaznamů produktů.
Zkousel jsem tve reseni na DB s 30000 produkty.
Dotaz trval 0.0735 sekund
Kdyz ale zavolam trvá to stejně. Pak jen to vypíšu přes mysql_numrows();
Takze nejde nejake optimalnejsi reseni?
15. 10. 2012 14:09:49
https://webtrh.cz/diskuse/group-by-jak-nastavit/#reply819900
Jiří Matějka
verified
rating uzivatele
(23 hodnocení)
15. 10. 2012 15:26:27
Úplně nechápu problém, 0,0735 je příliš dlouho? Přijde mi to jako celkem rozumné číslo...
15. 10. 2012 15:26:27
https://webtrh.cz/diskuse/group-by-jak-nastavit/#reply819899
James_Scott
verified
rating uzivatele
(7 hodnocení)
15. 10. 2012 15:29:40
Myslim, že jiná možnost už asi nebude. Možná by se to chtělo podívat na indexy, nebo na nastavení MYSQL serveru.
15. 10. 2012 15:29:40
https://webtrh.cz/diskuse/group-by-jak-nastavit/#reply819898
hm
verified
rating uzivatele
(20 hodnocení)
15. 10. 2012 15:32:59
on je problem s tim ze GROUP BY primo ovlivnuje vystupy z tehle fci na pocitani zaznamu, takze bud bys musel vymyslet dotaz ktery nepouziva group by ale vyhazuje to co dotaz s group by a pak by slo pouzit count() a dost mozna by tam byl nejaky rozdil v rychlosti.
Ale tady mas velky rozdil v prenosech - pri pouziti fce se mezi databazi a scritpem prenesou a nabufferujou vsechny data, vsechny radky, moje verze s count(*) prenese jen a pouze vysledek... Coz ej obrovsky rozdil - u 30 000 radku s produkty uz nekde v radech stovek kilobajtu (a to je uz znat na rychlosti behu, zateze na RAM, procesor co buffer musi vzit a spocitat pocet zaznamu) :) navic pokud bys nemel databazi a script na stejnem stroji, setris tim linku, navic prenos jednoho cisla a 30 000 zaznamu taky tzrva uplne jinou dobu (v milisekundach, ale znat to uz je)
15. 10. 2012 15:32:59
https://webtrh.cz/diskuse/group-by-jak-nastavit/#reply819897
Martiz
verified
rating uzivatele
(8 hodnocení)
15. 10. 2012 17:15:27
Spatne jsem to napsal, omlouvam se.
Takze kdyz to spocitam pres COUNT jak uvadis a ne pres mysql_numrows, je to mnohem efektivnejsi reseni z pohledu RAMky a procesoru?
Díky :)
15. 10. 2012 17:15:27
https://webtrh.cz/diskuse/group-by-jak-nastavit/#reply819896
hm
verified
rating uzivatele
(20 hodnocení)
15. 10. 2012 17:17:30
je to lepsi reseni z mnoha pohledu :) vzdycky je lepsi co nejvic veci vyresit uz na strane databaze nez v php, kdyz si zmeris celkovou dobu behu scriptu tak ten dotaz sice bude trvat na strane databaze skoro stejnou dobu, alůe protoze php uz neudela nic vic nez ze prijme a zobrazi jedno jednoduche cislo, bude to ve vysledku efektivnejsi a lepsi :)
15. 10. 2012 17:17:30
https://webtrh.cz/diskuse/group-by-jak-nastavit/#reply819895
Martiz
verified
rating uzivatele
(8 hodnocení)
15. 10. 2012 17:18:47
Diky, vyreseno :)
15. 10. 2012 17:18:47
https://webtrh.cz/diskuse/group-by-jak-nastavit/#reply819894
Pro odpověď se přihlašte.
Přihlásit