Сайт создавал не я, базу тоже, но программу написать заставили меня..
Задача: Создать top самых просматриваемых новостей за последний месяц.
Что имею
Две таблицы.
В одной - две колонки: id новости и ее рейтинг.
А во второй и дата публикации, и заголовок, и новостной раздел, и т.д и т.п. и др.
Сначала задача показалась простой, сделал из из первой выборку по рейтингу десятка новостей, сделал массив в РНР и из второй таблицы по id вытащил нужные мне новости.
...но база то ведется уже 10 лет!
Вопрос: как с минимальными машинными запросами выборку сделать только за определенную дату?
P.S. Там задача еще и посложнее, надо эти новости еще и с определенных разделов взять. Но это уже задача следующая.
1. AlfOz - 21 Августа, 2015 - 20:52:01 - перейти к сообщению
2. DlTA - 21 Августа, 2015 - 21:24:42 - перейти к сообщению
AlfOz
чет как то не понятно в чем проблема
сделать JOIN между двух таблиц
указав в условиях чтоб дата публикации новости была не старше чем ...
и отсортировать по рейтингу
и все
чет как то не понятно в чем проблема
сделать JOIN между двух таблиц
указав в условиях чтоб дата публикации новости была не старше чем ...
и отсортировать по рейтингу
и все
3. AlfOz - 22 Августа, 2015 - 09:22:30 - перейти к сообщению
DlTA
Вот, спасибо, Вам! А чуть поконкретнее... Ну, пример такого запроса, пожалуйста!
С меня пиво.
Вот, спасибо, Вам! А чуть поконкретнее... Ну, пример такого запроса, пожалуйста!
С меня пиво.
4. DlTA - 22 Августа, 2015 - 09:52:53 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
скопировать код в буфер обмена
- SELECT новости.id, рейтинги.рейтинг
- FROM рейтинги
- JOIN новости ON рейтинги.id = новости.id AND новости.дата_публикации >'какой там месяц'
- ORDER BY рейтинги.рейтинг ASC
- LIMIT 10