Počítání v MySQL

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
sovicka
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 17. pro 2003
Bydliště: východní prágl
Kontaktovat uživatele:

Počítání v MySQL

Příspěvek od sovicka »

Zdarec, mám tu takovej skriptík, kterej mi plive počet nalezených výsledků v MySQL... zatím mi dává pouze počet řádků, ale já bych potřeboval spočítat všechny hodnoty v jednom sloupci podle zvolených podmínek...

někde jsem slyšel něco o nějaké funkci SUM nebo taknějak ... ale nevím jak to použít....

DÍKY MOC

Příklad co je tam teď:

Kód: Vybrat vše

//spodní část tabulky se součty
$vysledek = MySQL_Query("SELECT * FROM tricka WHERE typ = Tričko'"); 
$vysledek2 = MySQL_Query("SELECT * FROM tricka WHERE typ = 'Tričko' AND barva = 'Černá'"); 
$vysledek3 = MySQL_Query("SELECT * FROM tricka WHERE typ = 'Tričko' AND barva = 'Modrá'");
// ..... a potom si to vyvolám:
MySQL_Num_Rows($vysledekXX)
A příklad co bych potřeboval:

Kód: Vybrat vše

$vysledek = MySQL_Query("SELECT FROM tricka !!SPOCITEJ HODNOTY SLOUPCE (kusu) VSUDE,KDE:!!  WHERE typ = Tričko'"); 
$vysledek2 = MySQL_Query("SELECT * FROM tricka !!SPOCITEJ!! WHERE typ = 'Tričko' AND barva = 'Černá'"); 
$vysledek3 = MySQL_Query("SELECT * FROM tricka !!SPOCITEJ!! WHERE typ = 'Tričko' AND barva = 'Modrá'");
// ... a teď nějaký příkaz, který mi dá celkový počet kusů od každé barvy v nějakých proměnných
???
Francie ... sladká Francie
miho
Čestný člen
Čestný člen
Registrován: 29. kvě 2003
Bydliště: Orlová-Lutyně

Příspěvek od miho »

Pokud jsi tim spocitat myslel secist tak se skutecne pouzije SUM

Kód: Vybrat vše

select sum(sloupec) from tabulka where podminka
pokud chces scitane hodnoty seskupit(agregovat) dle nejakeho sloupce tak pouzij group by

Kód: Vybrat vše

select sum(sloupec),seznam_sloupcu_dle_kterych_se_seskupuje from tabulka where podminka group by seznam_sloupcu_dle_kterych_se_seskupuje
dle tveho popisu treba

Kód: Vybrat vše

select sum(kusu),typ from tabulka group by typ
vrati celkovy pocet kusu pro kazdy typ zbozi.

Pokud potrebujes jen skupiny, ktere splnujou nejake kriterium tak pouzijes navic having napr.

Kód: Vybrat vše

select sum(kusu),typ from tabulka group by typ having sum(kusu)>100
vrati celkovy pocet kusu pro kazdy typ zbozi jehoz celkovy pocet kusu je vetsi nez 100.

Pokud potrebujes zjistit pocet radku tak je tvuj pristup z prvniho prikladu extremne neefektivni. Spravne je

Kód: Vybrat vše

select count(*) from tricka where ...
127.0.0.1, sweet 127.0.0.1
sovicka
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 17. pro 2003
Bydliště: východní prágl
Kontaktovat uživatele:

Příspěvek od sovicka »

Ještě poslední dotázek:
jakým příkazem to dostanu ven...???
něco jako MySQL_Fetch_Result ????
Francie ... sladká Francie
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

sovicka2001 píše:Ještě poslední dotázek:
jakým příkazem to dostanu ven...???
něco jako MySQL_Fetch_Result ????
normálně to můžeš přiřadit do proměnné podobně jako každý jiný select, když uděláš SELECT SUM(Sloupec) FROM ... tak dostaneš normálně zase relaci (tabulku) o jednom řádku a jednom sloupci
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
sovicka
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 17. pro 2003
Bydliště: východní prágl
Kontaktovat uživatele:

Příspěvek od sovicka »

jj, už jsem na to přišel sám... jen to takový lehce přeplácaný, ale funguje to!

DÍKY MOC :wink:
Francie ... sladká Francie
tosuja
Začátečník
Začátečník
Registrován: 07. dub 2004
Bydliště: Brno

Příspěvek od tosuja »

Ciste informacne, na www.mysql.com je online manual (proklikas se tam pres Developer zone, Documentation). Tam se dozvis i to, cos nikdy vedet nechtel....
AMD Athlon XP 2000+ se snizenym napetim 1.6V | chladic Spire WhisperRockIII | MB Soltek SL75DRV-2 | 1GB CL2 RAM | 320GB Hitachi | DVD-RW NEC 3520A | DVD-ROM Pioneer 106S | GK ATI 9800 128MB | SoundBlaster Live 5.1 | sitovky Via-Rhine II a Realtek 8139 | TV+FM tuner Genius Video Wonder III Pro | bedna YeongYang YY-5601, 120mm vetrak| zdroj Chieftec 350W | monitor ADI E75 | OS Debian sid
SpeedyGT
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 16. kvě 2005
Kontaktovat uživatele:

Příspěvek od SpeedyGT »

Sorry, že to házím sem, ale jde taky o počítání v mysql, ale jen řádky... ať dělám, co dělám, stále mi to nefunguje....

Mám dotaz

Kód: Vybrat vše

SELECT COUNT (*) AS pocet FROM clanky WHERE kategorie = 'recenze'
který mi na administraci ic.cz v sql dotazech vyplivne normálně číslo všech recenzí....

Pokavaď to ale zkusím rovnou z webu, tak nic...
Zkoušel sem i nějak takhle

Kód: Vybrat vše

$pole = mysql_query("SELECT COUNT (*) AS pocet FROM clanky WHERE kategorie = 'recenze'");
$data = (mysql_fetch_array($pole));
echo $data['pocet'];
a pořád nic... připojením k db by to být nemělo, ostatní dotazy normálně fungují.... Neví někdo preco mi to nefunguje? :?

// mysql_error(); hlásí

Kód: Vybrat vše

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) AS pocet FROM clanky WHERE kategorie = 'recenze'' at line 1
//Vyřešeno, mezi COUNT a (*) nesmí být mezera :oops:
AMD Ryzen R7 7700X + AiO Fractal Lumen S36 V2 / ASUS TUF Gaming B650-PLUS / Kingston FURY 2x32GB 5200MHz / Gigabyte RX 7900GRE OC / WD Black SN770 NVMe 1TB / Corsair RM850e (2025) / Fractal Meshify / 3x Samsung Odyssey G5 G50 2560x1440 180Hz
Lamicz
Začátečník
Začátečník
Uživatelský avatar
Registrován: 30. kvě 2005
Bydliště: In a galaxy far away...
Kontaktovat uživatele:

Příspěvek od Lamicz »

zkus delat COUNT nad indexem, IMHO to pole musi byt ciselny:

Kód: Vybrat vše

SELECT COUNT(`Id`) AS `pocet` FROM ...
:: DESKA :: Asus A8V-XE (VIA K8T890) :: CPU :: AMD Athlon 64 3700+ :: VGA :: ATI Asus GF7600 512MB - passive solution :: RAM :: 4x 256MB Samsung :: HDD :: 80GB Maxtor PATA ::
Odpovědět

Zpět na „Programování a web“