Autor | Zpráva | ||
---|---|---|---|
23k Profil |
#1 · Zasláno: 10. 6. 2005, 09:48:06
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 * |
#2 · Zasláno: 10. 6. 2005, 10:16:59
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 |
#3 · Zasláno: 10. 6. 2005, 10:27:23
Kajman> DIKY TI! Tenhle select je presne to co sem potreboval! :)
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0