2016-07-26 3 views
0

私は最高の平均と票が上から下に向かっているので、 "ORDER BY average、votes DESC"で正しくソートしていませんでしたが、DESC何を解決しませんでした。 var_dumpの私の結果http://pastie.org/private/b05smuh0fvw72wwp2w1zq最高のエントリーは底にありますが、私は上から始めて下に行く必要があります。DESCを使用したSQLクエリが正常に動作しない

SELECT c.*, r.votes, c.total_comments, 
     ROUND(sumrate/votes) AS average 
FROM catalog c LEFT JOIN 
    (SELECT r.object_id, COUNT(*) as votes, SUM(r.rate) as sumrate 
     FROM ratings r 
     GROUP BY r.object_id 
    ) r 
    ON r.object_id = c.catalog_id LEFT JOIN 
    (SELECT c.catalog_id, COUNT(*) as total_comments 
     FROM comments c 
     GROUP BY c.catalog_id 
    ) c 
    ON c.catalog_id = c.catalog_id 
GROUP BY c.catalog_id 
ORDER BY average, votes DESC; 
+1

GROUP BYは無効であり、最近のMySQLバージョンでは許可されていません。 (GROUP BY句が指定されている場合、SELECTリストの各列参照は、グループ化列を特定するか、または集合関数の引数でなければなりません)。 – jarlh

+0

どういう意味ですか?グループ化の短いテーブルエイリアスですか?あなたは例を示すことができますか? – SkySonny

答えて

5

order byだけでなく、すべての列の順序を定義できます。デフォルトはASCです。

ORDER BY average ASC, votes DESC 

に自動的

ご注文

ORDER BY average, votes DESC 

ターンしかし、あなたは

ORDER BY average DESC, votes DESC 
3

を探しているあなたは、列の両方のためにDESCを指定する必要があります。それ以外の場合はデフォルトではASC

関連する問題