Autor Zpráva
maxx
Profil *
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
maxx
propojit tabulky sazky s tabulkou uživatele, hledej join
maxx
Profil *
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 *
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 *
Chjo, neumim poradne vkladat odkazy a jeste sem zapomel heslo (doufam, ze ho ted trefim).
maxx
Profil *
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 *
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 *
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 *
100*SUM(zapasy.zap_tip=sazky.saz_tip)/count(*)
maxx
Profil *
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(*)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: