Autor | Zpráva | ||
---|---|---|---|
gogy27 Profil |
#1 · Zasláno: 7. 1. 2011, 19:22:32
Zdravim,
chcel by som sa vás spýtať, ako ošterím poradie hráčov v tabuľke pri zhode bodov? Chcel by som aby pri zhode bodov sa to hodnotilo podľa výhier, pri zhode bodov aj výhier podľa vstrelených gólov, pri zhode všetkého ostatného podľa vzájomných zápasov. To posledné netreba, myslím tie zápasy, ale tie predchádzajúce 3 kritéria neviem spojiť. Mam tento skript: <?php $sql = "SELECT * FROM uzivatelia WHERE id='".$_SESSION['id']."'"; $query = mysql_query($sql); $vypis = mysql_fetch_array($query); $divizia = $vypis["divizia"]; $body = $vypis["body"]; $vyhry = $vypis["vyhry"]; $vstrelene_goly = $vypis["vstrelene_goly"]; $umiestnenie_sql = "SELECT * FROM uzivatelia WHERE divizia='".$divizia."' AND body > '".$body."'"; $umiestnenie_query = mysql_query($umiestnenie_sql); $poradie_query = mysql_fetch_array($umiestnenie_query); $poradie = $poradie_query + 1; ?> Ďalej sa nejako neviem pohnúť. Za každú radu dopredu ďakujem :) |
||
TomášK Profil |
#2 · Zasláno: 7. 1. 2011, 20:18:03
Order může mít víc parametrů.
SELECT ... ORDER BY body, vyhry, vstrelene_goly, ... |
||
gogy27 Profil |
#3 · Zasláno: 7. 1. 2011, 20:50:30 · Upravil/a: gogy27
TomášK:
1. nepoužívam ORDER BY 2.ako sa dá zistiť zjednodušene či niektoré 2 týmy majú všetky tri parametre rovnaké? |
||
Kajman_ Profil * |
#4 · Zasláno: 7. 1. 2011, 22:19:35
order by pomůže, pokud vypisujete všechny uživatele, pokud jednoho, asi by šlo něco jako
$umiestnenie_sql = "SELECT count(*)+1 poradi FROM uzivatelia WHERE divizia='$divizia' AND (body > '$body' OR (body = '$body' AND (vyhry>'$vyhry' OR (vyhry='$vyhry' AND vstrelene_goly>'$vstrelene_goly'))) ) "; Dá se to zapsat i row zápisem, což je pro lidi přehlednější, ale mysql tam neumí využít dobře indexy, takže to může být pomalejší. ako sa dá zistiť zjednodušene či niektoré 2 týmy majú všetky tri parametre rovnaké? Spočítáte počet týmů se všemi stejnými parametry, které znáte. Na tom není nic složitého. |
||
gogy27 Profil |
#5 · Zasláno: 7. 1. 2011, 22:53:55
Kajman:
Vyriešil som to takto: for ($i = 0; $i <= 13; $i++){ $query_tabulka = mysql_query("SELECT * FROM uzivatelia WHERE divizia='$divizia' ORDER BY body, skore, vyhry, vstrelene_goly DESC LIMIT $i, 1"); $pozadavek_tabulka = mysql_fetch_array($query_tabulka); $id = $pozadavek_tabulka["id"]; $query2_tabulka = mysql_query("UPDATE uzivatelia SET poradie_tabulka=$i+1 WHERE id = $id"); S tými vzájomnými zápasmi však bude asi väčší problém. |
||
Kajman_ Profil * |
#6 · Zasláno: 7. 1. 2011, 23:35:37
Tohle jde udělat i jediným updatem. Stačí upravit ten, co je ve faq.
set @radek=0; update uzivatelia set poradie_tabulka=@radek:=@radek+1 where divizia='$divizia' order by body desc, skore desc, vyhry desc, vstrelene_goly DESC; Pak ještě dopočítat ty vzájemné zápasy u týmů, co mají všechny 4 parametry stejné. |
||
Časová prodleva: 14 let
|
0