用MySQL观看排名

时间:2014-02-22 00:06:18

标签: mysql views popularity

我喜欢MySQL,并且在过去的两年里我一直在使用它。但现在我被卡住了......

我有三张桌子

 Files
---------
id | name  | views | folder_id
1  | car   | 274   |   1
2  | bike  | 100   |   1
3  | train | 120   |   2

 Folders
---------
id | name    | storage_id
1  | folder1 |     1
2  | folder2 |     2

 Storage
---------
id | name
1  | storage1
2  | storage2
3  | storage3

我想创建一个mysql查询,以便按存储器内每个文件夹中所有文件的总视图量排序存储表。

我的第一种方法是通过folder_id添加每个文件分组的总视图,但是,如何将该值传递到文件夹的表中,然后对存储的表进行排序?

我很抱歉我的解释不好。我还是个菜鸟。

我们的想法是按文件的总观看次数排序存储表

提前致谢

2 个答案:

答案 0 :(得分:1)

加入表格,按Storage分组,并按文件浏览总数排序:

SELECT      Storage.*
FROM        Storage
  LEFT JOIN Folders ON Folders.storage_id = Storage.id
  LEFT JOIN Files   ON Files.folder_id    = Folders.id
GROUP BY    Storage.id
ORDER BY    SUM(Files.views) DESC

sqlfiddle上查看。

答案 1 :(得分:1)

对eggyal的一个略有不同的查询,显示总数,如果你想要它

 SELECT Storage.name, SUM(Files.views) AS total_views FROM Storage
 LEFT JOIN Folders ON Folders.storage_id = Storage.id
 LEFT JOIN Files ON Files.folder_id = Folders.id
 GROUP BY Storage.name
 ORDER BY total_views DESC