Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: TOP новостей
Форумы портала PHP.SU » » Работа с СУБД » TOP новостей

Страниц (1): [1]
 

1. AlfOz - 21 Августа, 2015 - 20:52:01 - перейти к сообщению
Сайт создавал не я, базу тоже, но программу написать заставили меня..
Задача: Создать top самых просматриваемых новостей за последний месяц.
Что имею
Две таблицы.
В одной - две колонки: id новости и ее рейтинг.
А во второй и дата публикации, и заголовок, и новостной раздел, и т.д и т.п. и др.

Сначала задача показалась простой, сделал из из первой выборку по рейтингу десятка новостей, сделал массив в РНР и из второй таблицы по id вытащил нужные мне новости.
...но база то ведется уже 10 лет!

Вопрос: как с минимальными машинными запросами выборку сделать только за определенную дату?

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

 

Powered by ExBB FM 1.0 RC1