| Autor | Zpráva | ||
|---|---|---|---|
| Vasek42 Profil * |
#1 · Zasláno: 10. 3. 2014, 16:27:58 · Upravil/a: Moderátor (editace znemožněna) 11. 3. 2014, 11:17:47
Dobrý den, mám skript, který počítá kolik příspěvek obsahuje celkem hvězdiček, z jiné tabulky v databázi.
mám celkem dvě tabulky prispevky = zde jsou napsaný příspěvky ratings = zde mám hodnocení Tento kod mi počítá kolik má příspěvek hodnocení(hvězdiček) $total = 0;
$rows = 0;
$sel = mysql_query("SELECT rating_num FROM ratings WHERE rating_id = 'pris_".$row["id"]."'");
while ($data = MySQL_Fetch_Array($sel)) {
$total = $total + $data['rating_num'];
$rows++;
}
$perc = ($total/$rows);celý skript $result = mysql_query("select * from prispevky ORDER BY datum DESC LIMIT 7");
while ($row = MySQL_Fetch_Array($result)) {
$text = htmlspecialchars_decode($row["text"]);
//hodnocení počet
$total = 0;
$rows = 0;
$sel = mysql_query("SELECT rating_num FROM ratings WHERE rating_id = 'pris_".$row["id"]."'");
while ($data = MySQL_Fetch_Array($sel)) {
$total = $total + $data['rating_num'];
$rows++;
}
$perc = ($total/$rows);
//konec hodnocení
echo "<div class=\"prispevek_nadpis\">".$row["nadpis"]."</div>";
echo"</div>";
}Jak nyní udělám, aby se příspěvky seřadily od nejlepšího hodnocení po nejhorší? Děkuji mnohokrát |
||
| juriad Profil |
Složeným dotazem, vrátí příspěvky i hodnocení najednou (takto se to vždy v praxi dělá, nepokládá se další dotaz na jednotlivá hodnocení):
SELECT p.*, r.prumer
FROM prispevky p
LEFT JOIN (SELECT rating_id, AVG(rating_num) prumer
FROM ratings
GROUP BY rating_id
) r ON r.rating_id = CONCAT('pris_', p.id)
ORDER BY prumer DESC
LIMIT 7Je-li ti na tom dotazu něco nejasného, zeptej se. |
||
| Vasek42 Profil * |
#3 · Zasláno: 10. 3. 2014, 17:02:04
juriad:
Super děkuji moc, zdá se, že funguje parádně. Mám více hodnocení: příspěvky, foto, uživatelé.. tudýž mám v rating_id předpony pris_, foto_, uziv_ |
||
| juriad Profil |
#4 · Zasláno: 10. 3. 2014, 17:04:49 · Upravil/a: juriad
Tak přidej nový sloupec typ hodnocení a v podmínce na řádce 6 budeš mít:
ON r.rating_id = p.id AND r.rating_type = 'pris' První normální forma říká, že každý sloupec má obsahovat dále nedělitnou informaci. Žádné spojení informace o typu a id hodnoceného objektu. Jak bys vytvořil dotaz na průměrné hodnocení každého typu zvlášť? Chceš zjistit, zda uživatelé hodnotí fotky výrazně jinak než příspěvky. |
||
| Vasek42 Profil * |
#5 · Zasláno: 10. 3. 2014, 17:14:46
dobrá, změním to, ještě jednou díky.
|
||
| Vasek42 Profil * |
#6 · Zasláno: 10. 3. 2014, 21:30:48
Dobrý večer, tak změněno, ještě bych potřeboval u jednoho hodnocení jestli by nešlo vypsat pouze 3tí výsledek.
Tzv zase, aby se to řadilo, ale vypsal se jen záznam na 3 místě. |
||
| peta Profil |
#7 · Zasláno: 11. 3. 2014, 07:22:53
LIMIT 3,1 ?
|
||
| Kajman Profil |
#8 · Zasláno: 11. 3. 2014, 08:45:13
peta:
Opět radíš chybně! Aby se vypsal třetí řádek, je potřeba 2 přeskočit a jeden vypsat. limit 2, 1 |
||
|
Časová prodleva: 13 let
|
|||
0