1

私は3つのテーブルを持っています。

  Video (Id, ViewCount, Location)
  Likes (Id, Video, User)
  Location (Id, Name) 

最高ランクの 4 つの動画 (Video.ViewCount + count(Likes.User) の合計) をクエリするにはどうすればよいでしょうか。それらを Video.Id でグループ化し、特定の場所から上位 4 つの結果を返します。

私はこれを試しました:

SELECT  Video.Id, sum(Video.ViewCount + count(Likes.User)) as Points From Video
  Left Join Likes
  ON Likes.Video=Video.Id
  WHERE Video.Location=30
  GROUP BY Video.Id
  ORDER BY Points DESC
  LIMIT 4;

しかし、グループ機能の使用法が正しくありません。誰かポインタを持っていますか??

4

1 に答える 1

3
SELECT  id,
        viewcount +
        (
        SELECT  COUNT(*)
        FROM    likes l
        WHERE   l.video = v.id
        ) AS points
FROM    video v
WHERE   location = 30
ORDER BY
        points DESC, id
LIMIT 4
于 2011-11-02T16:59:59.313 に答える