Autor | Zpráva | ||
---|---|---|---|
Taps Profil |
#1 · Zasláno: 10. 1. 2008, 09:20:06 · Upravil/a: Taps
Mám tento kod
$pocet1=mysql_result(mysql_query("Select count(id) FROM evidence where vlozil='$cislo'and kategorie='hokej' and YEAR(datum) = '$rok'"),0); $pocet2=mysql_result(mysql_query("Select count(id) FROM evidence where vlozil='$cislo'and kategorie='fotbal' and YEAR(datum) = '$rok'"),0); $pocet3=mysql_result(mysql_query("Select count(id) FROM evidence where vlozil='$cislo'and kategorie='basketbal' and YEAR(datum) = '$rok'"),0); $pocet4=mysql_result(mysql_query("Select count(id) FROM evidence where vlozil='$cislo'and kategorie='tenis' and YEAR(datum) = '$rok'"),0); $celkem_1 = mysql_result(MySQL_Query("SELECT SUM(poplatek) AS soucet FROM evidence where vlozil='$cislo' and kategorie='hokej' and YEAR(datum) = '$rok' order by soucet"),0); $celkem_2 = mysql_result(MySQL_Query("SELECT SUM(poplatek) AS soucet FROM evidence where vlozil='$cislo' and kategorie='fotbal' and YEAR(datum) = '$rok' order by soucet"),0); $celkem_3 = mysql_result(MySQL_Query("SELECT SUM(poplatek) AS soucet FROM evidence where vlozil='$cislo' and kategorie='basketbal' and YEAR(datum) = '$rok' order by soucet"),0); $celkem_4 = mysql_result(MySQL_Query("SELECT SUM(poplatek) AS soucet FROM evidence where vlozil='$cislo' and kategorie='tenis' and YEAR(datum) = '$rok' order by soucet"),0); Vypisuje jednotlivé kategorie a k tomu jednotlivé ceny a chtěl bych se zeptat jestli by tento zápis nešel nějak zjednodušit...aby provedení bylo co nejrychlejší a zároven co nejméně zatížilo databázi |
||
Kajman_ Profil * |
and YEAR(datum) = '$rok'
Tak na tohle se nedá použít index i když by na sloupci datum byl. Index asi pomůže i na slopci vlozil a kategorie. select count(id), sum(poplatek), kategorie from evidence where vlozil='$cislo' and datum between '$rok-01-01' and '$rok-12-31' and kategorie in ('hokej','fotbal','basketbal','tenis') group by kategorie |
||
Taps Profil |
#3 · Zasláno: 10. 1. 2008, 10:03:02
Kajman_
Já mám ve databázi uložené datum ve formátu YYYY-MM-DD a tu proměnou rok volám pomocí funkce Date("Y") $rok=Date("Y");. Opravdu to tak nemůže být ? Zatím mě vše fungovalo tak jak má. |
||
Kajman_ Profil * |
#4 · Zasláno: 10. 1. 2008, 10:11:02
Opravdu to tak nemůže být ? Zatím mě vše fungovalo tak jak má.
Může, ale myslel jsem, že se ptáte na optimalizaci. |
||
Taps Profil |
#5 · Zasláno: 10. 1. 2008, 10:18:18
Kajman_
Pokud jsem správně pohopil vaši ukázku tak ten select dotaz spočítal všechny kategorie dohromady, ale já bych potřeboval aby se mi to vypsalo nějak takto název kategorie - počet - suma všechno jednotlivě pod sebe. Jestli to nějak jde abych tě dotazů enbylo tolik |
||
Kajman_ Profil * |
#6 · Zasláno: 10. 1. 2008, 10:20:37
Pochopil jste to špatně. Díky group by, to vypíše dle vašeho přání.
|
||
Taps Profil |
#7 · Zasláno: 10. 1. 2008, 10:36:19 · Upravil/a: Taps
zkoušel jsem to takto $rok=Date("Y"); include "config.php"; $sql=mysql_query("select count(id), sum(poplatek),vlozil,pracoviste, kategorie from evidence where vlozil='01' and pracoviste='TB' and YEAR(datum)='$rok' and kategorie in ('fotbal','hokej','tenis','basketbal') group by kategorie") or die (mysql_error()); echo $sql; Ale vypsalo mi to resource#id, poté jsem zkusil přidat mysql_result ale pak se mi zase ukázal jen počet. Mohl byste mi prosím poradit |
||
Kajman_ Profil * |
#8 · Zasláno: 10. 1. 2008, 10:47:06
$sql=mysql_query("select count(id) pocet, sum(poplatek) suma,vlozil,pracoviste, kategorie from evidence where vlozil='01' and pracoviste='TB' and datum between '$rok-01-01' and '$rok-12-31' and kategorie in ('fotbal','hokej','tenis','basketbal') group by kategorie, vlozil, pracoviste") or die (mysql_error());
while($radek=mysql_fetch_assoc($sql)) print_r($radek); |
||
Taps Profil |
#9 · Zasláno: 10. 1. 2008, 10:53:55
Kajman_
Děkuji...člověk se celý život učí. |
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0