1

一緒に結合している2つのテーブルがあり、各テーブルにはアイテムが追加された日付があります。私がやりたいのは、フォーラムのような両方のテーブルの日付列を使用して、最後のアクティビティで行を並べ替えることです。誰かが質問をします。新しい質問が出されると、その質問はボードの一番上に表示されます。質問は下に移動し、誰かがそれに回答を投稿すると、ボードの一番上に戻ります。このようなことを行うためのクエリを作成するにはどうすればよいですか?これが私がこれまでに持っているものです:

select question, question_id, count(a.answer_id) total
from questions q
left join answers a using(question_id)
group by q.question_id order by question_id desc limit 10
4

1 に答える 1

2

私が間違っている場合は訂正してください。ただし、回答がない場合は、質問から注文までの日付を使用するだけで済みます。

この場合:

order by COALESCE(a.date, q.date) desc

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce

考え直してみると、q.dateとa.dateがbyのグループに含まれていないため、クエリが失敗します。q.dateをgroupbyに追加しても問題ありませんが、a.dateをgroup byに追加すると、回答がある回数だけ同じ質問が表示されます。

したがって、参加を次のようなものに変更する必要があります。

left join (select question_id, max(date) as date from answers group by question_id) a
 on a.question_id = q.question_id

そして、私が提案した順序を使用します

于 2013-01-11T17:51:17.913 に答える