Autor Zpráva
luxus
Profil
Dobrý den, mam 2 tabulky v databázi. Jedna je system_players a druhá system_zapasy. Do systému zápasy se zadávají zápasy a jsou tam i 3 hvězdy zápasu - sloupce hvezda1, hvezda2, hvezda3. DO těchto sloupů se zadávají jenom id hráčů co jsou v druhé tabulce sestem players.

Potřeboval bych udělat pořadí něco jako tabulku kde první sloupec bude jmeno hráče, druhý sloupec 1. hvězda, jakože kolikrát byl první hvězdou zápasu, třetí sloupec 2. hvězda,jakože kolikrát byl první hvězdou zápasu a to stejné i 3. hvězda ve 4 sloupci
candiess
Profil
luxus:
Potřeboval bych udělat
Tak si udělej :) a nebo prostě googli, případně si projdi DJPW archív, kde se tohle už určitě řešilo :)
Šéva
Profil
Ahoj,

s trochou štestí a pár úpravami by ti mohlo chodit tohle:

<?php
echo "<table><tr>
<td>Příjmení</td>
<td>Jméno</td>
<td>1. hvězda</td>
<td>2. hvězda</td>
<td>3. hvězda</td>
</tr>";
$dotaz=mysql_query("select a.hvezda1,a.hvezda2,a.hvezda3,b.id,b.jmeno,b.prijmeni from system_zapasy a,system_players b where (b.id=a.hvezda1 or b.id=a.hvezda2 or b.id=a.hvezda3) order by prijmeni");
while($vysledek=mysql_fetch_array($dotaz))
{
     echo "<tr>
     <td>$vysledek[prijmeni]</td>
     <td>$vysledek[jmeno]</td>
     <td>$vysledek[hvezda1]</td>
     <td>$vysledek[hvezda2]</td>
     <td>$vysledek[hvezda3]</td>
     </tr>";
}
echo "</table>";
?>
Kajman
Profil
Ten dotaz bude spíš něco jako

select p.jmeno,
       p.prijmeni,
       count(h1.id_hrace) hvezda1,
       count(h2.id_hrace) hvezda2,
       count(h3.id_hrace) hvezda3
from   system_players p
left   join system_zapasy h1
on     p.id_hrace = h1.hvezda1
left   join system_zapasy h2
on     p.id_hrace = h2.hvezda2
left   join system_zapasy h3
on     p.id_hrace = h3.hvezda3
group  by p.id_hrace, p.prijmeni, p.jmeno,
order  by 3 desc, 4 desc, 5 desc
luxus
Profil
Tak od šévy to vypíše první sloupec jmena hvězd, ale slopce hvězdy vypíše jen id hráčů ale tam právě musí být kolikrát byly hvězdou a jakou :)

OD kajmana ten cod moc nechapu a nemůžu udělat proto mysql query :/ a tudíž ani skusit sem začátečník
Kajman
Profil
luxus:
ten cod moc nechapu a nemůžu udělat proto mysql query

Já nechápu, proč nemůžete zkusit dotaz, který nechápete :-) Prostě vezmete jeden select a dáte ho místo druhého. A pokud ho chcete pochopit, poklikejte si odkazy z něj vedoucí.
luxus
Profil
Kajman:
Já nechápu, proč nemůžete zkusit dotaz, který nechápete :-) Prostě vezmete jeden select a dáte ho místo druhého. A pokud ho chcete pochopit, poklikejte si odkazy z něj vedoucí.
No mám to takhle
<?php
$dotaz=mysql_query("select p.jmeno,
    count(h1.id_hrace) as hvezda1,
    count(h2.id_hrace) as hvezda2,
        count(h3.id_hrace) as hvezda3
from   system_players p
left   join system_zapasy h1
on     p.id_hrace = h1.hvezda1
left   join system_zapasy h2
on     p.id_hrace = h2.hvezda2
left   join system_zapasy h3
on     p.id_hrace = h3.hvezda3
group  by p.jmeno") or die(mysql_error());

$i=1;
while($row=mysql_fetch_assoc($dotaz)){
echo "<tr><td>".$i++.".</td><td>".$row["jmeno"]."</td><td>".$row["tym"]."</td>";
echo"<td>".$row["hvezda1"]."x</td><td>".$row["hvezda2"]."x</td><td>".$row["hvezda3"]."x</td></tr><br />";
}

?>

Jenže píše mi to "Unknown column 'h1.id_hrace' in 'field list'" fakt nevím co s tím :/ Jako vím kde je chyba v kodu jen nevím jak to opravit :/
Šéva
Profil
stačí to opravit na platný sloupeček, který máš v DB,pak to bude chodit tzn v tvem pripade id_hrace bude asi mozna jen neco jako id ?
Kajman
Profil
luxus:

Ano, zkuste změnit výskyty p.id_hrace na p.id jak radí Šéva a pak výskyty typu h1.id_hrace na h1.hvezda1 se správnými čísly - tam jsem udělal botu.
luxus
Profil
BOMBA funguje to, měl sem tam vlastní chybku :)
<?php
$dotaz=mysql_query("select *, p.jmeno,
    count(h1.hvezda1) as hvezda1,
    count(h2.hvezda2) as hvezda2,
        count(h3.hvezda3) as hvezda3,
    (count(h1.hvezda1)*3)+(count(h2.hvezda2)*2)+(count(h3.hvezda3)*1) as body 
from   system_players p
left   join system_zapasy h1
on     p.id = h1.hvezda1
left   join system_zapasy h2
on     p.id = h2.hvezda2
left   join system_zapasy h3
on     p.id = h3.hvezda3
group  by p.jmeno order by body desc limit 0,100") or die(mysql_error());

$i=1;
while($row=mysql_fetch_assoc($dotaz)){
echo "<tr><td>".$i++.".</td><td>".$row["jmeno"]."</td><td>".$row["tym"]."</td><td>".$row["pozice"]."</td>";
echo"<td>".$row["hvezda1"]."x</td><td>".$row["hvezda2"]."x</td><td>".$row["hvezda3"]."x</td><td>".$row["body"]."</td> </tr>";
}

?>

Jen mám ještě jednu věc, zkoušel sem to tam vložit kdekoliv do toho kodu ale nefunguje to. Musím do toho strčit podmínku že se to započítá až zápas bude schválený, tudíž from system_zapasy where schvaleno='ano' zkoušel sem to nějak strčit za join system zapasy ale tam ne :/
Jan Tvrdík
Profil
Zkus to takhle:
...
left   join system_zapasy h1
on     (p.id = h1.hvezda1 and h1.schvaleno = 'ano')
left   join system_zapasy h2
on     (p.id = h2.hvezda2 and h2.schvaleno = 'ano')
left   join system_zapasy h3
on     (p.id = h3.hvezda3 and h3.schvaleno = 'ano')
...
luxus
Profil
Super děkuji moc všem, vše funguje ;)

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: