Autor | Zpráva | ||
---|---|---|---|
Fantasta Profil |
#1 · Zasláno: 4. 5. 2011, 17:52:35 · Upravil/a: Fantasta
Ahoj/Dobrý den,
Mám problém z výpisem počtu výskytů jednoho čísla z více sloupců. Jedná se o jednu (hokejovou) tabulku vstrelene_goly, ve které mám (kromě jiného) tři sloupce - strelec, prvni_asistence, druha_asistence. Do těchto sloupců ukládám pouze id hráčů z jiné tabulky (hraci). Jde mi o vypsání nejproduktivnějších hráčů - tudíž čísel, které se v těchto třech sloupcích nejčastěji vyskytují. Nevím, jak zformulovat SQL dotaz, jestli se mám snažit využít seznamu hráčů z tabulky hraci, nebo jestli to půjde zavolat pouze na tabulce vstrelene_goly. Jako možné řešení mě napadlo vytvoření samostatné tabulky produktivita, do které bych ukládal při zapisování nových záznamů vstřelených golů, ale přijde mi zbytečné tvořit další tabulku, když by to (doufám) mělo jít i bez toho. Nebo ne? Díky za rady : -) Takhle by to šlo, ale není to seřazeno... $query = "SELECT * from hraci"; $result = mysql_query ($query) or die ("sql dotaz nevykonán"); $i=0; while ($row = mysql_fetch_array($result)) { $i++; $id = $row['id']; $jmeno = $row['jmeno']; $goly = mysql_result(mysql_query("SELECT COUNT(*) FROM `vstrelene_goly` where `strelec`='$id'"),0); $asistence = mysql_result(mysql_query("SELECT COUNT(*) FROM `vstrelene_goly` where `asistence`='$id'"),0); $asistenceb = mysql_result(mysql_query("SELECT COUNT(*) FROM `vstrelene_goly` where `asistenceb`='$id'"),0); $bodiky = $goly + $asistence + $asistenceb; $asis = $asistence + $asistenceb; echo"$jmeno $bodiky($goly+$asis)<br>"; } |
||
panther Profil |
#2 · Zasláno: 4. 5. 2011, 21:01:01 · Upravil/a: panther
Fantasta:
a co jen select count(*) from vstrelene_goly where strelec = $id or asistence = $id or asistenceb = $id Nemám teď po ruce server, abych vyzkoušel, nešlo by otočit IN ve smyslu where $id in (strelec, asistence, asistenceb) ? Hádám, rád bych vyzkoušel, ale asi to nepůjde.
|
||
Kajman_ Profil * |
#3 · Zasláno: 4. 5. 2011, 22:55:38
Možná to půjde takto nějak
SELECT h.*, (SELECT COUNT(*) FROM `vstrelene_goly` where `strelec`=h.id) goly, (SELECT COUNT(*) FROM `vstrelene_goly` where h.id in (`asistence`, `asistenceb`)) asistence FROM `hraci` h ORDER BY (goly+asistence) DESC, goly DESC |
||
Fantasta Profil |
#4 · Zasláno: 4. 5. 2011, 23:13:34
Ano, takhle nějak to přesně jde, děkuji moc, problém vyřešen :)
|
||
Časová prodleva: 13 let
|
0