Autor | Zpráva | ||
---|---|---|---|
maxx Profil * |
#1 · Zasláno: 14. 9. 2008, 22:41:13
Zdravim,
potřeboval bych od vás radu, jak na následující řešení, nějak mě vůbec nenapadá jak to provést. Zkouším si udělat jen jednoduché sázky Mám následující script pro vypočítání procentuální úspěšnosti jednotlivého uživatele: @$zapasy = mysql_query ("select sazky.*, zapasy.* FROM sazky, zapasy WHERE saz_uzivatel='$_SESSION[UserId]' AND sazky.saz_zapas=zapasy.id AND zapasy.score!=''"); while ($zapas = @mysql_fetch_array($zapasy)){ $datum = strftime("%d/%m/%Y %H:%M", $zapas[datum]); $datum_sazky = strftime("%d/%m/%Y %H:%M", $zapas[saz_datum]); list($skore_domaci,$score_hoste)=explode(':',$zapas[score]); if($skore_domaci>$score_hoste){$spravny_tip='1';} elseif($skore_domaci==$score_hoste){$spravny_tip='0';} elseif($skore_domaci<$score_hoste){$spravny_tip='2';} if($spravny_tip==$zapas[saz_tip]){$bod[]='1';} A následně vypočítám procenta: $bodu=count($bod); $pocet=mysql_num_rows(mysql_query("SELECT zapasy.*,sazky.* FROM sazky, zapasy WHERE zapasy.id=sazky.saz_zapas AND sazky.saz_uzivatel='$_SESSION[UserId]' AND zapasy.score!=''")); $procent = round(100* ($bodu/ $pocet)); Ovšem narazil jsem na problém, že mě nenapadá jak udělat výpis všech uživatelů, kde budou mít zobrazeny zmiňovaná procenta. Díky za pomoc, snad jsem popsal svůj problém dostatečně :) |
||
Taps Profil |
#2 · Zasláno: 15. 9. 2008, 07:44:32
maxx
propojit tabulky sazky s tabulkou uživatele, hledej join |
||
maxx Profil * |
#3 · Zasláno: 15. 9. 2008, 13:28:06
join chápu, taky ho "používám" akorát takhle sazky.saz_zapas=zapasy.id. Ale já nevim jak to použít v mym případě. Abych moh prostě u každýho uživatele vypsat ty procenta.
|
||
Sicario Profil * |
#4 · Zasláno: 15. 9. 2008, 18:40:51
1) Cislene hodnoty se nezapisuji do uvozovek, ani do apostrofu. To plati jak pro PHP tak i pro SQL. (Proc to tu vidim kazdou chvili?)
2) Telo smycky jsi sem asi nezkopiroval cele. 3) Proc mas pro score jen jeden sloupec? Rozdel to do dvou. 4) Nadhodim jen par odkazu na uzitecne materialy. - V MySQL dotazu muzes pouzivat ruzne konstrukce s ifruzne konstrukce s if. To by v kombinaci s GROUP BY snad mohlo vyresit vypocet procent v ramci jednoho dotazu. - Lze take formatovat datum a cas.formatovat datum a cas. |
||
Sicario Profil * |
#5 · Zasláno: 15. 9. 2008, 18:42:19
Chjo, neumim poradne vkladat odkazy a jeste sem zapomel heslo (doufam, ze ho ted trefim).
|
||
maxx Profil * |
#6 · Zasláno: 16. 9. 2008, 11:52:03
Tak jsem se o to pokusil, ale výsledkem je zatim pouze následující dotaz:
SELECT CASE WHEN zapasy.vysledek_d>zapasy.vysledek_h THEN '1' WHEN zapasy.vysledek_d<zapasy.vysledek_h THEN '2' ELSE '0' END AS spravny_tip FROM zapasy, sazky WHERE zapasy.id=sazky.saz_zapas AND sazky.saz_id=253 Zkoušel jsem to na tom jednom zápase zatim pouze a funguje to. Ale nevim jak dál, resp. jak udělat další podmínky rovnou v tom dotazu a pak rovnou sečíst. |
||
Kajman_ Profil * |
#7 · Zasláno: 16. 9. 2008, 13:22:59
Zkuste něco takového
SELECT sum(CASE WHEN zapasy.vysledek_d>zapasy.vysledek_h THEN '1' WHEN zapasy.vysledek_d<zapasy.vysledek_h THEN '2' ELSE '0' END=sazky.tip) AS spravnych_tipu, count(*) vsech_tipu FROM zapasy, sazky WHERE zapasy.id=sazky.saz_zapas AND sazky.saz_uzivatel='$_SESSION[UserId]' AND zapasy.score!='' Ale do zapasy bych přidal možná sloupeče, který bude mít ten stav null,1,2,0 aby to case tolik nezdržovalo. |
||
maxx Profil * |
#8 · Zasláno: 16. 9. 2008, 14:20:38
Super, dík. Tak jsem přidal ještě jeden sloupeček k zápasům, kam se automaticky bude zapisovat správnej tip. Takže mi vznikl tenhle konečný dotaz:
SELECT SUM(zapasy.zap_tip=sazky.saz_tip) AS spravnych_tipu, count(*) vsech_tipu, sazky.saz_uzivatel, uzivatele.jmeno FROM zapasy, sazky, uzivatele WHERE zapasy.id=sazky.saz_zapas AND sazky.saz_uzivatel=uzivatele.id AND zapasy.vysledek_d IS NOT NULL GROUP BY sazky.saz_uzivatel procenta počítám takto: $procent = round(100* ($vypis[spravnych_tipu]/ $vypis[vsech_tipu])); Akorát bych chtěl zkusit zařadit ty procenta do toho dotazu a řadit podle toho výpis uživatelů. Pokoušel jsem se k SELECTU přidat (spravnych_tipu / vsech_tipu) AS procenta, ale bezvýsledně. Netušíte kde dělám chybu? Díky |
||
Kajman_ Profil * |
#9 · Zasláno: 16. 9. 2008, 14:25:35
100*SUM(zapasy.zap_tip=sazky.saz_tip)/count(*)
|
||
maxx Profil * |
#10 · Zasláno: 17. 9. 2008, 19:23:47
Díky moc, ještě bych měl jen takovej teoretickej dotaz, kdybych chtěl případně přidělovat za správný tip 2 body a za špatný tip odečítat jeden bod, jak by to bylo nejlépe řešené? Přidat do tabulky sazky sloupec body? Nebo jinak? Díky
|
||
Kajman_ Profil * |
např.
SUM(zapasy.zap_tip=sazky.saz_tip)*3-count(*) |
||
Časová prodleva: 16 let
|
0