나는 포럼이 있으며 가장 인기있는 사용자를 찾고 싶습니다. 가장 인기있는 사용자는 게시물과 댓글에서 가장 좋아하는 것으로 정의되며 가장 많은 게시물과 댓글로 정의됩니다. 이 가장 많이 사용되는 사용자는 (주문 1), 대부분의 게시물 (주문 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
사용자 테이블
:그래서 내가 3 개 테이블이
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
은 (http://sqlfiddle.com)는 [바이올린]에서 데이터 (또는 그 일부)를 넣어, 그래서 MySQL의에 액세스 할 수없는 우리의 사람들은 당신을 도울 수 있습니다. – hd1
원하는 출력을 게시 할 수 있습니까? –
원하는 출력은 SUM에서 외삽 한 결과가 표의 것과 동일합니다. 잘못된 출력 (현재와 같이)은 데카르트 곱으로 끝납니다. – Ricardus