我喜欢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添加每个文件分组的总视图,但是,如何将该值传递到文件夹的表中,然后对存储的表进行排序?
我很抱歉我的解释不好。我还是个菜鸟。
我们的想法是按文件的总观看次数排序存储表
提前致谢
答案 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