Autor Zpráva
gogy27
Profil
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
Order může mít víc parametrů.
SELECT ... ORDER BY body, vyhry, vstrelene_goly, ...
. Počítání vzájemných zápasů je o něco složitější, je potřeba join tabulky pořadí se sebou, vazba bude přes stejný počet bodů.
gogy27
Profil
TomášK:
1. nepoužívam
ORDER BY
, pretože by mi to pomohlo iba pri vypisovaní, nie pri určení presného poradia daného týmu. Alebo sa mýlim?

2.ako sa dá zistiť zjednodušene či niektoré 2 týmy majú všetky tri parametre rovnaké?
Kajman_
Profil *
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
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 *
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é.

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: