Рейтинг по просмотрам с 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