私はフォーラムを持っており、最も人気のあるユーザーを見つけたいと思っています。最も人気のあるユーザーは、投稿とコメントに対するいいね! の数が最も多く、投稿とコメントの合計数が最も多いことで定義されます。いいね数が最も多い(1 位)、投稿数が多い(2 位)、コメント数が多い (3 位)ユーザーが最も人気があります。次に (2 番目に) 最も人気のあるユーザーにも同じロジックが適用されます。
だから私は3つのテーブルを持っています:
投稿テーブル
id user_id likes
1 1 0
2 1 0
3 1 0
4 1 0
5 1 0
6 1 1
7 1 0
8 2 0
9 2 2
10 2 0
11 2 0
12 3 0
13 3 0
14 4 0
15 4 10
コメント表
id user_id likes
1 1 0
2 1 1
3 1 1
4 1 0
5 2 0
6 2 2
7 2 1
8 4 1
9 4 0
ユーザー テーブル
id name
1 John
2 Adam
3 Maggie
4 Steve
いいねの列には、それぞれの投稿 (行) で他のユーザーによって与えられたいいねが含まれます。私は試した:
SELECT DISTINCT c.id, c.name,
SUM(a.likes), SUM(b.likes), (SUM(a.likes) + SUM(b.likes)) as popular,
COUNT(a.id) as mostp, COUNT(b.id) as mostc
FROM posts as a, comments as b, users as c
WHERE a.user_id=b.user_id AND a.user_id=c.id AND b.user_id=c.id
GROUP BY a.user_id, b.user_id ORDER BY popular DESC, mostp DESC, mostc DESC
クエリをテストすると、予想よりも多くのいいね(合計)が得られるため、明らかにこれは機能しません。
ここにライブクエリがあります http://sqlfiddle.com/#!2/08900/3