Autor Zpráva
Martin20
Profil
Dobrý den,

mám v databázi dvě tabulky, jednu pro články: id, jmeno, kategorie ... a druhou pro jeji hodnoceni, kde se ukládá průměr hodnocení článku.

Potřeboval bych řadit články dle hodnocení:

SELECT c.*
FROM tab_clanky AS c
LEFT JOIN tab_hodnoceni AS h ON h.clanekid = c.id
WHERE c.kategorieid = '.$kategorieId.'
ORDER BY h.prumer


To funguje, problém je, že do tabulky hodnoceni se vklada průměr hodnocení, ale jsou tam jen záznamy hodnocených článků. To znamená, že ORDERED BY h.prumer ignoruje nehodnocene články a já bych potřeboval nějakým způsobem do sql dotazu dát to, že nehodnocený články budou mít výchozí hodnotu 0, tak aby se počítalo is nehodnocenými články.

Děkuji.
joe
Profil
Martin20:
že ORDERED BY h.prumer ignoruje nehodnocene články a já bych potřeboval nějakým způsobem do sql dotazu dát to, že nehodnocený články budou mít výchozí hodnotu 0

Jak by je ignoroval? Ve výpisu se objeví i ty články, které hodnocení nemají, protože h.prumer má u nich hodnotu NULL (prostě tam nejsou) a to je v řazení stejné, jako kdyby měly hodnotu 0.

Řazení by tedy mělo fungovat správně, tak jak potřebuješ. Spíš je problém v tom, že se to teď řadí vzestupně (ASC) a ty chceš opak - DESC.

Takže dotaz doplň na konci:
ORDER BY h.prumer DESC


Jinak mít průměr hodnocení v jiné tabulce je zbytečné, proč to neukládáš rovnou do tabulky tab_clanky, když je momentálně mezi nimi vztah 1:1?

V oddělených tabulkách by to mělo význam, pokud by ta druhá tabulka vypadala:

ID clanku | ID uzivatele co hlasuje | bodove hodnoceni
Martin20
Profil
joe:
Ty tabulky jsou mnohem složitější než jsem zde zjednodušil, proto se používají obě.

Jinak děkuji, funguje to jak to píšete. Problém byl mezi židlí a klávesnicí. Zaměnil jsem hodnoty "průměr hodnocení" za "počet hodnocení".

Ještě jednou děkuji.

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: