私は約1ヶ月間この問題に苦しんでいます.. 多くの投稿を検索して読んでいますが、基本的にはMySQLのORDER BY "count(*)と他の2つのパラメータ"は別のテーブルから
...この作品を作る:私は2つのデータベーステーブルfun_posts
とfun_post_upvotes
を持って、私はこれは私の最新のコードは、それが動作しませんされて
SELECT *
FROM fun_posts
ORDER BY (HOTTEST POSTS(MOST UPVOTED THIS WEEK))
にしたい
SELECT *
FROM fun_posts
ORDER BY (SELECT count(*), image_id, date
FROM fun_post_upvotes
GROUP BY image_id
ORDER BY DATE(date) > (NOW() - INTERVAL 7 DAY) DESC,
count(*) DESC,
date DESC)
この行を2つの異なる関数SELECT
に分割すると、それらは機能します。私は単純な投稿を選択することができ、私は望むようにupvotes数を選択することができます。
しかし、私はそのような1行にそれらを作る場合、私は次のエラーを取得:
#1241 - Operand should contain 1 column(s)
EDITのNR 1:
fun_posts
テーブル fun_post_upvotes
テーブル
を私がチェックした回答の問題:
ここでは、select
機能で投稿がどのように注文されるかを見ています。与えられたコードを有する10-> 134-> 132-> 2-> 13
そしてここで(それは、画像を選択し、なく、その順序で)、(Iしたいようにそれは選択します)10-> 122- > 39-> 8> 110あなたはこの
SELECT fp.*, fpu.`cnt`
FROM fun_posts fp
LEFT JOIN (SELECT image_id, COUNT(*) AS cnt
FROM fun_post_upvotes
WHERE `date` > (NOW() - INTERVAL 7 day)
GROUP BY image_id
) fpu ON (fpu.image_id = fp.id)
ORDER BY fpu.cnt DESC, fp.`date` DESC, fp.`id` DESC;
を行うに参加することがimage_idはのANによってグループ化されたfun_post_upvotes
からリストを選択して使用することができます
。 –
@ Fred-ii-なぜですか?説明していただけますか?それから、今週はアップポートがない "投稿"は表示されません。そして、2つの別々のSELECTSに分割されるとき、彼らは働いています。 – Crelix