Рейтинг по просмотрам с MySQL

Я люблю 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, но затем, как я могу передать это значение в таблицу папок, чтобы затем упорядочить таблицу хранилища?

Я прошу прощения за мое плохое объяснение. Я все еще нуб.

Идея состоит в том, чтобы упорядочить таблицу de storage по общему количеству просмотров файлов.

заранее спасибо

2 ответа

Решение

Присоединяйтесь к столам, группируйте по 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

Смотрите это на http://sqlfiddle.com/.

Немного другой запрос к eggyal's, который также показывает итоги, если вы этого хотели

 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
Другие вопросы по тегам