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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как составить алгоритм....

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Test11
Отправлено: 12 Января, 2016 - 20:02:11
Post Id


Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Суть такова, необходимо вытаскивать из бд 10 статей с наивысшим рейтингом. Только за последний месяц, в случаи недобора. Скажем не хватает 5 статей, вытащить эти 5 статей за предыдущей месяц..
 
 Top
dcc0
Отправлено: 12 Января, 2016 - 22:15:11
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




SELECT * from basename WHERE date > date ORDER BY rate DESC LIMT 10

переменная=0
while fetch ляляля
инкремент переменной++
Если меньше 10 ,
то еще запросик


-----
Март 2021. Бросил программирование
 
 Top
Test11
Отправлено: 12 Января, 2016 - 22:39:00
Post Id


Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Так можно и 10 за раз запросов делать...

Что нибудь по проще...
 
 Top
dcc0
Отправлено: 12 Января, 2016 - 22:41:32
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Нет, там всегда будет или 1, или 2 запроса. НЕ БОЛЬШЕ!
Инкремент в цикле только считает количество записей.
Необязательно ведь считать средствами mysql, типа mysql_num_rows

А вообще для oreder by возможно два параметра.

(Отредактировано автором: 12 Января, 2016 - 22:47:04)



-----
Март 2021. Бросил программирование
 
 Top
Мелкий Супермодератор
Отправлено: 12 Января, 2016 - 22:55:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Сортировать эти статьи за разные месяцы как?

postgresql
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT /**/ FROM articles WHERE /**/ ORDER BY date_trunc('month', added_at) DESC, rating DESC LIMIT 10


mysql
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT /**/ FROM articles WHERE /**/ ORDER BY extract(YEAR_MONTH FROM added_at) DESC, rating DESC LIMIT 10


Вопрос производительности зависит от where, есть разные варианты как это делать ещё быстрее.
По старому обыкновению мог напутать asc|desc


-----
PostgreSQL DBA
 
 Top
dcc0
Отправлено: 12 Января, 2016 - 23:47:08
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Все верно. DESC (descending) - по убыванию (спускающийся
)
Т.е. от большего к меньшему, что означает - большие числа будут наверху :_)

Пример вывода на страницу, как его видит пользователь:
100
99
88
77

Почему-то все хотя бы раз, но запутываются в этом.
(хотя в стране антиподов может быть наоборот)

(Отредактировано автором: 12 Января, 2016 - 23:53:28)



-----
Март 2021. Бросил программирование
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB