Я хочу создать SQL-запрос (в MySQL), который будет отображать 6 случайных, но популярных записей в моем веб-приложении.
В моей базе данных есть следующие таблицы:
- Избранное
- материалы
- submissions_tags
- 1012 * метки *
Пользователи
submissions_tags
и tags
- это таблицы перекрестных ссылок, которые дают каждому представлению определенное количество тегов.
submissions
содержит логические featured
, int downloads
и int views
, все три из которых я хотел бы использовать для взвешивания этого запроса.
- Таблица
favorites
снова является таблицей перекрестных ссылок с полями submission_id
и user_id
. Подсчет количества раз, когда каждая заявка была одобрена, было бы хорошо, чтобы взвесить результаты.
Итак, в основном я хочу выбрать 6 случайных строк, взвешенных по этим четырем переменным - featured, downloads, views,
и favorite count
. Каждый раз, когда пользователь обновляет страницу, я хочу выбрать новую случайную цифру 6. Так что, возможно, запрос мог бы ограничить его 12 самыми последними, но показать только 6 случайных результатов. Это разумная идея с точки зрения обработки и т. Д.?
Итак, мой вопрос: как мне написать этот запрос? С чего мне начать? Я использую PHP / CodeIgniter для управления этим сайтом. Можно ли получить весь лот за один запрос, или мне придется использовать несколько запросов для этого? Или мне нужно упростить мои идеи?
Спасибо
Jack