Neumím dotaz do databáze MySQL
Ahoj,
potřeboval bych pomoc s dotazem/výpisem.
V databázi je tabulka, která má sloupce kraj, cs, era, kb, ge, ra, uc. Jde o hodnocení bankovních poboček z pohledu osob se sluchovým postižením. Hodnotilo se v každém kraji 6 bank.
Rozepsat to po jednotlivých krajích snad zvládnu, ale neumím udělat "vše". Známkuje se jako ve škole a chtěl bych tabulku, kde by byl průměr známek ze všech krajů. Zatím jsem sesmolil
<!--vse-->
<table border="2" cellpadding="6" cellspacing="0" frame="vsides" rules="rows" style="border: 2px solid maroon">
<?php
$vysledekvse = mysql_query(
"SELECT * FROM banky_bezbarierovost
);
//) or die(mysql_error());
/* Konec přímé práce s databází. */
?>
<br><br>
<tr>
<td><strong>Česká spořitelna a. s.</strong></td>
<td style="text-align: center"><?php echo $zaznam["cs"]; ?></td>
</tr>
</table>
<?php endwhile ?>
<!--/vse-->
Neumím to jednak nijak sečíst a vydělit 14 (14 krajů), druhak mi to vypisuje chybu špatná syntaxe i u tohoto obyč. výpisu (<?php echo $zaznam["cs"]; ?>) s jedním záznamem v tabulce.
Takže jsem něčeho dosáhl. Žádné while, ale nadefinovat proměnnou. Jen nevím, proč je všude celé číslo, když to mám na jedno desetinné. Ale ono už je celé číslo v tom výsledku s nulami. Přijde mi to, že už je výsledek zaokrouhlen, jelikož CS má součet u čtyř řádků 9 a to by mělo být 2,2 a je tam 2.
dole vypis.php
ten round by som nedaval do PHP, ale do SQL:
inak co sa ma dosiahnut tymi SUM(cs), SUM(era)? Pretoze to len scita vsetky znamky dokopy. Ak mas 3 riadky s hodnotami 3, 5, 1 tak vysledok bude 9. Predpokladam, ze tam malo ist COUNT - pocet riadkov/znamok.
Jo, mám to jak jsem chtěl. Moc ti děkuji. Že to nepočítá na jedno desetinné místo ani když to je v selectu rozdejchám.
V noci mě napadlo, udělat si proměnné, vydělit součet ve sloupci počtem řádků v tabulce mysql a ve výpisu dávat echo s výsledky (ale nějaké složité).
Jaké datové typy mají dané údaje?
mysql
Podle mě by to měl být typ "4.3. Čísla s pohyblivou desetinou čárkou", například "FLOAT".
Podle mě když jsou v celočíselném tvaru a následně je s nimi provedena nějaká matematická operace, tak výsledek může být zase ve stejném tvaru (celočíselném).
Ja myslel, ze TINYINT je take ciselny udaj. Od snad -128 do +128. Z formulare do db se odesilaji znamky "jako ve skole". Doma ten FLOAT zkusim. Ja uz ho i zkousel, ale byla tam jina chyba (where), a pak uz jsem to nezkusil.
wam_Spider007 má pravdu, teď jsem to také vyzkoušel, takže doma to zkoušet ani nemusíš. Takže Nevím proč ti to nepočítá správně . Na tom webu taky asi nemáš zobrazeny všechny kraje, jelikož jsem počítal Ge a vyšlo mi 14/4=3,5 (suma/pocet_kraju) a na webu mas "2.0". Jinak TINYINT je také číselný údaj od -128 do +127, bez znaménka (UNSIGNED) 0 až 255, ale vždy celočíselný. Vycházel jsem na základě zkušností z jiných programovacích jazyků.
Kraje tam všechny nejsou, jsou tam zatím jen 4. Testeři to musí vyplnit aby to bylo v db. Jsou však líní. Navíc jsem to dodělal dnes v noci a výzva k vyplnění jim přišla až dnes.
ja som to skusal a dal som AVG funkciu na pole typu INT a z cisel 2 a 3 mi vyplulo 2.500 takze je to ok.
Inak datovemu typu float by som sa radsej v databazach vyhol. Namiesto toho radsej DECIMAL.
To jsem z toho jelen. Já dal všem INT a nic. Furt celá čísla.
a ten round robis priamo v tom SQL prikaze ako som to napisal? ak ano tak je to divne ...
Ak tak skus urobit tie polia z INT na DECIMAL(2,1). Ako som pisal, zmenilo by to typ pola na take, kde pojde vlozit len cisla od 0.0 do 9.9
Teď dám obrázky, aby byla změna
Záhada. Koukám, že jsou i blbě. Např Ge Money je průměr 3,7, ale na výstupu je 2.0
ok, a ked len cisto v MySQL spustis ten SELECT, ktory je v PHP, tak ake hodnoty to vyhodi?
Ak to vyhodi spravne, tak bude chyba niekde v PHP.
Select přímo v phpmyadmin vyhodí tohle
Koukám, že to snad ani nesčítá, ale vyhazuje pro každý kraj zvlášť. Očekával jsem, že vypadne 6 čísel pro sum a 6 pro průměr.
Export té tabulky, kdyby se tím někdo chtěl zabývat
ach jaj my sme ale krepi
no necudo, ze to dava cele cisla, ked to grupujeme za kraj a ty mas v kazdom kraji len jeden riadok. Takze to urobi priemer vzdy za jeden kraj.
To, ze je celkovy priemer za CS 2,25 je sice pekne, ale toto dostaneme len ak spravime priemer za vsetky kraje (2+2+2+3)/4. My ale robime priemer pre kazdy kraj zvlast. Cize musel by si mat viacero riadkov pre Prahu, viacero pre Stredocesky kraj etc.
Takze asi bude treba urobit select:
Jo, z tohoto už lezou průměry jak jsem to původně chtěl.
Děkuji ti za pomoc, já bych se s tím mořil měsíc. Značím za vyřešené.
Až někdo nude chtít průměry ze sloupců, b udeme ho sem odkazovat. Konečný select + to další je takto
vypis.php
Včera mě také napadlo, udělat si $delitel z počtu řádků v tabulce asi nějak
$delitel = mysql_result(mysql_query("SELECT COUNT(*) FROM banky_bezbarierovost"), 0);
Pak select na sloupec, sečíst ta čísla (nevím jak) a vydělit tou proměnnou. Ale bylo toho všeho nějak moc oproti tomuto selectu.