Выборка разом топ рубрик и определенного кол-ва топ-наименований по каждой из рубрик
Уважаемые коллеги!
Вот уже несколько дней думаю над запросом.
Есть таблица с рубриками и таблица с наименованиями. У каждой рубрики и наименования есть поле рейтинга.
Делаю выборку наименований с их рубриками.
Задача в том, чтобы выбрать ТОП 3 наименования из ТОП 3 рубрик. Другими словами хочу чтобы результат примерно был таков:
фильмы | аватар | рейтинг рубрики 10 | рейтинг наименования 100 |
фильмы | крестный отец | рейтинг рубрики 10 | рейтинг наименования 90 |
фильмы | звездные войны | рейтинг рубрики 10 | рейтинг наименования 60 |
сериалы | доктор хаус | рейтинг рубрики 8 | рейтинг наименования 200 |
сериалы | тбв | рейтинг рубрики 8 | рейтинг наименования 40 |
сериалы | интерны | рейтинг рубрики 8 | рейтинг наименования 10 |
мультфильмы | жил был пёс | рейтинг рубрики 5 | рейтинг наименования 90 |
мультфильмы | том и джерри | рейтинг рубрики 5 | рейтинг наименования 80 |
мультфильмы | бурума свергли с престола | рейтинг рубрики 5 | рейтинг наименования 66 |
В продакшене, разумеется всех сущностей больше, но суть раскрыта.
Есть ли красивое решение?
На сколько я понимаю хочется сделать это всё одним запросом?
Укажите, пожалуйста, названия таблиц (можно условно) и главное зависимости (т.е., если рейтинг в другой таблице, то по какому идентификационному полю он определяет своё наименование).
Желательно, конечно, одним запросом. Если не получится красиво на MySQL, придется делать несколько запросов и хранить результаты в кеше, потому что выборка по одной рубрике получается около 30-120 миллисекунд аж.
Примерная структура таблиц:
Рейтинг для таблицы рубрик в этой же таблице. И для наименований рейтинг в колонке таблице наименований.