使用MySQL按视图排序

使用MySQL按视图排序,mysql,views,popularity,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

我喜欢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查询,这样存储的表就按照存储中每个文件夹中所有文件的总视图数排序

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

很抱歉我解释得不好。我还是个笨蛋

其思想是根据文件的总视图量对数据存储的表进行排序


提前感谢

加入表格,按
存储分组
并按文件视图总数排序:

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

请在上查看。

一个与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

谢谢D那太棒了!