问题可能很混乱。
在影响中我有以下内容:
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中找到它们排在最前面。
这有意义吗?感谢。
答案 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;