0

我喜欢 MySQL,在过去的 2 年里我一直在使用它。但现在我被困住了...

我有三张桌子

 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 添加每个文件分组的总视图,但是,如何将该值传递给文件夹的表,然后对存储表进行排序?

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

这个想法是按文件的视图总数对存储表进行排序

提前致谢

4

2 回答 2

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上查看。

于 2014-02-22T00:09:13.077 回答
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
于 2014-02-22T00:17:43.330 回答