查询以查找最受关注的'从一个表中[COUNT()]返回另一个表的结果

时间:2014-04-07 16:34:10

标签: asp.net sql

问题可能很混乱。

在影响中我有以下内容:

WatchList table
 UserId | FilmId
|   3        77
|  etc       etc
|
|
|

这些是下表的外键

FilmDB - Film_title, Film_plot, Film_Id etc.

aspnet_memberships - UserId, Username etc..

现在,我认为我需要使用连接,但我正在努力学习语法。

我想使用' Count'在观看列表'并返回最常见的filmId和他们的对应信息,但是我想返回FilmDB结果的REST,基本上给我一个所有电影的列表,但是我经常在WatchedList中找到它们排在最前面。

这有意义吗?感谢。

2 个答案:

答案 0 :(得分:0)

您没有指定查询是否应按film_id或user_id分组。我提供的示例按用户分组,如果您将其更改为film_id,那么您将获得每部电影的所有用户的观看次数。

您需要使用子查询来获取计数,然后按计数降序排序以获得有序列表。

SELECT
    *
FROM
(
    SELECT 
        WatchList.Film_Id,
        WatchCount=COUNT(*)
        FilmDB.Film_Title
    FROM
        WatchList
        INNER JOIN FilmDB ON FilmDB.Film_Id=WatchList.Film_Id
    GROUP BY
        WatchList.UserID,
            WatchList.Film_Id,
            FilmDB.Film_Title
)AS X 
ORDER BY
    WatchCount DESC

答案 1 :(得分:0)

SELECT *
  FROM filmdb 
  LEFT JOIN (
       SELECT filmid, count(*) AS cnt
         FROM watch_list 
        GROUP BY filmid) AS a
    ON filmdb.film_id = a.filmid
 ORDER BY isnull(cnt, 0) DESC;

http://sqlfiddle.com/#!3/46b16/10