Autor Zpráva
23k
Profil
Bry ranko, pali me jeden ozehavy problemek a tim jsou SQL dotazy a jejich narocnost. Uvedu vas v rychlosti do problemu. V hlavnich tabulkach v MYSQL mam ulozeny vzdy IDcka -> hracu, tymu, soutezi ... a potrebuji samozrejme na webu ukazovat nazvy. Spojovani tabulek je obcas treba na 10 radku a nekdy u toho umiram ale da se to. Nicmene obcas to spojit proste nejde viz priklad.

na www.pesonline.info v levem sloupci asi 5 blok zezhora ukazuji 10 poslednich hranych zapasu, jak jsem predestrel vsude po webu mam IDcka a select jsem provedl nasledovne

>>
select vysledky.id_zapasu, vysledky.d_tym , vysledky.h_tym, vysledky.d_hrac, vysledky.h_hrac,
vysledky.d_goly,
vysledky.h_goly, date_format(vysledky.datum,'%d.%m. %H:%i') as DATE
FROM vysledky where schvaleno=2
ORDER by datum DESC
LIMIT 10
<<

a vyhodi to pouze cislicka :) vypomohl jsem si temito pomocnimi funkcemi

1/ function AllTym(){
$sql=mq("select id_tymu, jmeno_tymu, logo_tymu_small from tymy");

while($r=mfa($sql)){
$id_tymu=$r['id_tymu'];
$jmeno_tymu=$r['jmeno_tymu'];
$img_tymu=$r['logo_tymu_small'];
$Ftym[$id_tymu]['jmeno']=$jmeno_tymu;
$Ftym[$id_tymu]['img']= $img_tymu;
}
return $Ftym;
}

// ZJISTIL JSEM SI VSE O TYMU CO POTREBUJI VEDET

2/ function JmenoHrace(){
$sql=mq("select id, prezdivka from hraci");

while($r=mfa($sql)){
$id=$r['id'];
$prezdivka=$r['prezdivka'];
$Fhrac[$id]=$prezdivka;
}

return $Fhrac;
}

// JMENA HRACU

a samotna funkce na zobrazeni tech 10 utkani je tedy takovato


function ShowLast10Matches(){
$Hrac=JmenoHrace();
$all = AllTym(); // tym + img

$sql=mq("select vysledky.id_zapasu, vysledky.d_tym , vysledky.h_tym, vysledky.d_hrac, vysledky.h_hrac,
vysledky.d_goly,
vysledky.h_goly, date_format(vysledky.datum,'%d.%m. %H:%i') as DATE
FROM vysledky where schvaleno=2
ORDER by datum DESC
LIMIT 10
");

echo '<table cellspacing=1 cellpadding=1>';
while($r=mfa($sql)){
echo "<tr>

<td class='white'>$r[DATE]</td>
<td class='white'><img src='img/kluby-small/{$all[$r[1]]['img']}'
title='Zápas odehrál {$Hrac[$r[3]]} za tým {$all[$r[1]]['jmeno']}'/></td>
<td class='white'><img src='img/kluby-small/{$all[$r[2]]['img']}'
title='Zápas odehrál {$Hrac[$r[4]]} za tým {$all[$r[2]]['jmeno']}'/></td>
<td class='white'><a href='?secti=3&pg=35&match=$r[0]' class='reverse'>$r[5] : $r[6]</a></td>
</tr>";
}
echo '</table >';
}


Dalo by se to JEDNIM SELECTEM bez teto maskarady? Zkousel jsem nicmene nemuzu propojit IDcka tymu z tabulky TYMY kde mam veskere informace o tymech s IDckem tymu z tabulky VYSLEDKY. Proste to nelze nebo to neumim
kdyz to spojim nejak takto

>> SELECT .... where (vysledky.d_tym = tymy.id_tymu OR vysledky.h_tym = tymy.id_tymu)
tak mi to vyhodi polovicni radky bud s domacim nazvem tymu nebo s host. nazvem tymu ...

Doufam ze mi rozumite .

TO JE PROBLEM CISLO 1
--------------------

PROBLEM CISLO 2:

Aplikujete nekdy na zakladni select dalsi SELECT ci SELECTY v cyklu toho zakladniho selectu
tzn

SELECT XXX from neco
while{
select neco2 from neco2 WHERE neco2=XXX


}

Tzn. ze se provadi tolik selectu kolik je radku v prvnim CYKLU. Jak moc to vadi DB?



DIKY POKUD SE TIM BUDETE ZABYVAT a DIK za odpovedi.
Kajman
Profil *
1.
Jde to a většinou bývá lepší nechat to zpracovat db. Pokud ale těch týmů nebude moc a to pole využiješ i jinde, jde to tak taky.

Mohlo by to vypadat takhle nějak:

select d.jmeno_tymu , h.jmeno_tymu, v.d_goly, v.h_goly, v.datum
from vysledky as v, tymy as d, tymy as h
where v.d_tym=d.id_tymu and v.h_tym=h.id_tymu

2.
Ano, v některých případech.
23k
Profil
Kajman> DIKY TI! Tenhle select je presne to co sem potreboval! :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0