希望有人可以帮助我..
对于我的忠诚度计划,我会计算添加的歌曲数量、添加的课程数量、对课程和歌曲的评论数量等等。
对于名人堂,我想对声誉最高的成员进行看法。并在头像下方添加声誉。
因此我想总结一下:TOTAL = totalsongs + totallesson + totalsongcomments + totallessoncomments
我的表看起来像:
海报
poster_id| username |
---------|----------|
1 | lisa
2 | john
3 | ben
课
lesson_id| title | poster_id
---------|----------|----------
1 | lesson1 | 1
2 | lesson2 | 1
3 | lesson3 | 2
4 | lesson4 | 3
5 | lesson5 | 1
6 | lesson7 | 2
歌曲
song_id | title | poster_id
---------|----------|----------
1 | song 1 | 1
2 | song 2 | 1
3 | song 3 | 2
歌曲评论
com_id | song_id | poster_id | comment
---------|----------|-----------|--------
1 | 1 | 1 | This comment1
2 | 2 | 1 | This comment2
3 | 3 | 2 | This comment3
课程评论
com_id | lesson_id| poster_id | comment
---------|----------|-----------|--------
1 | 1 | 1 | This comment1
2 | 2 | 1 | This comment2
3 | 3 | 2 | This comment3
请帮助设置mysql查询
SELECT poster.gebruikersnaam
SUM(
(SELECT COUNT(*) FROM song) AS totalsongs +
(SELECT COUNT(*) FROM lesson AS totallesson +
(SELECT COUNT(*) FROM songcomment AS totalsongcomments +
(SELECT COUNT(*) FROM lessoncomment AS totallessoncomments +
)
FROM song
INNER JOIN poster ON poster.poster_id = song.song_poster_id
WHERE song.song_poster_id != '0'
GROUP BY poster.poster_id
ORDER BY TOTAL
LIMIT 0 , 250
这没关系,但是..仍然必须按总和订购:)
SELECT P.poster_id,
(SELECT COUNT(*) FROM song WHERE P.poster_id = song.song_poster_id) AS SongCount,
(SELECT COUNT(*) FROM lesson WHERE P.poster_id = lesson.lesson_poster_id) AS LessonCount,
(SELECT COUNT(*) FROM commentaar WHERE P.poster_id = commentaar.poster_id) AS SongCommCount,
(SELECT COUNT(*) FROM lesson_comment WHERE P.poster_id = lesson_comment.lesson_comment_poster_id) AS LessonCommCount
FROM poster AS P
LIMIT 0, 50
编辑 2
SELECT PM.poster_id , PM.SongCount , PM.LessonCount, PM.SongCommCount, PM.LessonCommCount, (PM.SongCount + PM.LessonCount + PM.SongCommCount + PM.LessonCommCount) AS TotalCount
FROM (
SELECT P.poster_id,
(SELECT COUNT(*) FROM song WHERE P.poster_id = song.song_poster_id) AS SongCount,
(SELECT COUNT(*) FROM lesson WHERE P.poster_id = lesson.lesson_poster_id) AS LessonCount,
(SELECT COUNT(*) FROM commentaar WHERE P.poster_id = commentaar.poster_id) AS SongCommCount,
(SELECT COUNT(*) FROM lesson_comment WHERE P.poster_id = lesson_comment.lesson_comment_poster_id) AS LessonCommCount
FROM poster AS P
LIMIT 0, 50
) AS PM
ORDER BY (PM.SongCount + PM.LessonCount + PM.SongCommCount + PM.LessonCommCount) DESC
编辑 3
SELECT poster_id,
songCount, lessonCount, songCommentCount, lessonCommentCount,
songCount + lessonCount + songCommentCount + lessonCommentCount as totalRank
FROM(SELECT poster.poster_id,
COALESCE(song.count, 0) as songCount,
COALESCE(lesson.count, 0) as lessonCount,
COALESCE(commentaar.count, 0) as songCommentCount,
COALESCE(lesson_comment.count, 0) as lessonCommentCount
FROM poster
LEFT JOIN (SELECT song_poster_id, COUNT(*) as count
FROM song
GROUP BY song_poster_id) song
ON song.song_poster_id = poster.poster_id
LEFT JOIN (SELECT lesson_poster_id, COUNT(*) as count
FROM lesson
GROUP BY lesson_poster_id) lesson
ON lesson.lesson_poster_id = poster.poster_id
LEFT JOIN (SELECT poster_id, COUNT(*) as count
FROM commentaar
GROUP BY poster_id) commentaar
ON commentaar.poster_id = poster.poster_id
LEFT JOIN (SELECT lesson_comment_poster_id, COUNT(*) as count
FROM lesson_comment
GROUP BY lesson_comment_poster_id) lesson_comment
ON lesson_comment.lesson_comment_poster_id = poster.poster_id) Total
ORDER BY totalRank DESC
LIMIT 0, 50