Autor | Zpráva | ||
---|---|---|---|
Holicz Profil |
#1 · Zasláno: 10. 2. 2015, 20:59:22
Ahoj,
mám dvě tabulky, jedna pro komentáře a druhá pro jejich hodnocení. Potřebuji dva sql dotazy, jen pro řazení od nejlepších (nejvíce score=1 v tabulce druhé) a od nejhorších (nejvíce score=0; score 0 a 1 se nesčítají) Komentáře: ![]() Hodnocení: ![]() Podařilo se mi vytvořit tenhle dotaz. Bohužel ani náznak funkčnosti. SELECT doporuceni_comments.id, review, doporuceni_comments.autor, datum, nadrazene, text FROM doporuceni_comments LEFT OUTER JOIN doporuceni_comments_score ON doporuceni_comments.id = doporuceni_comments_score.autor WHERE review = '".mysql_real_escape_string($id)."' GROUP BY doporuceni_comments.id ORDER BY SUM(doporuceni_comments_score.score) DESC LIMIT 10 OFFSET " . $od |
||
juriad Profil |
#2 · Zasláno: 10. 2. 2015, 21:04:00
Máš chybu ve spojovací podmínce:
doporuceni_comments.id = doporuceni_comments_score.comment |
||
Holicz Profil |
#3 · Zasláno: 10. 2. 2015, 21:09:44
Aha chápu, díky. A jak bych docílil efektu, aby komentáře se stejným počtem score 1 byly řazeny podle score 0?
|
||
juriad Profil |
#4 · Zasláno: 10. 2. 2015, 21:18:02
Takto:
ORDER BY SUM(doporuceni_comments_score.score = 1) DESC, SUM(doporuceni_comments_score.score = 0) DESC x = y vrací buď 0 - pokud se nerovnají, nebo 1 - pokud se rovnají.
|
||
Holicz Profil |
#5 · Zasláno: 10. 2. 2015, 21:55:59
Bohužel tento dotaz mi vypíše
Pořadí, počet kladných, počet záporných 1. 2+ 0- 2. 1+ 0- 3. 1+ 0- 4. 0+ 2- 5-10. 0+ 0- To čtvrté by mělo být poslední |
||
lionel messi Profil |
Holicz:
„To čtvrté by mělo být poslední“ Pokiaľ som správne pochopil, čo potrebuješ dosiahnuť, bude stačiť zmeniť zoraďovanie takto: ORDER BY SUM(doporuceni_comments_score.score = 1) DESC, SUM(doporuceni_comments_score.score = 0) ASC ASC môžeš pokojne vynechať, je to predvolený spôsob zoraďovania. |
||
Holicz Profil |
#7 · Zasláno: 10. 2. 2015, 22:10:57
To bylo první co jsem zkoušel, když nebyl požadovaný výsledek, ale kupodivu to vypsalo to stejné.
|
||
juriad Profil |
#8 · Zasláno: 10. 2. 2015, 22:17:13
Holicz:
Nevěděl jsem, že score=0 znamená negativní hodnocení. Zkus to ještě jednou. Jsem přesvědčený, že to (s ASC) bude ve správném pořadí. Ten dotaz znamená doslova: seřaď podle počtu jedniček sestupně a v případě shody podle počtu nul vzestupně. |
||
Kajman Profil |
#9 · Zasláno: 11. 2. 2015, 12:19:24
Pokud tam nebude hodnocení žádné, tak sum vrátí null, což je při řazení jiná hodnota než 0.
ORDER BY Coalesce(Sum(doporuceni_comments_score.score = 1), 0) DESC, Coalesce(Sum(doporuceni_comments_score.score = 0), 0) ASC |
||
Časová prodleva: 4 dny
|
|||
Holicz Profil |
#10 · Zasláno: 15. 2. 2015, 19:48:36
Kajman:
Aha, díky moc! |
||
Časová prodleva: 10 let
|
0