Подскажите, плиз. Mysql владею в объеме шаблонных выборок, что-то сложнее идёт трудно. Условия задачи. Новостной сайт. В таблице каждой новости "news" есть следующие значимые столбцы автоинкремент "id" (int), поле количества просмотров новости "viewcount" (int) и поле "date" (datetime). Для формирования на сайте раздела "самые интересные новости" предложен алгоритм, где каждая новость получает 1 балл за просмотр и теряет 2 балла за каждый прошедший с момента её опубликования день. Возможно ли сделать выборку с сортировкой по количеству баллов исходя из данного алгоритма? Просто по дате вывести 5 последних новостей я могу. PHP: $result = mysql_query("SELECT * FROM news WHERE id<>'$id' ORDER BY date DESC LIMIT 5"); (кусок кода WHERE id<>'$id' нужен, чтобы из этой колонки исключалась текущая новость). А как модернизировать выборку, чтобы она отвечала условиям вышеописанного алгоритма?
и что - реально "<>" работает? вроде всю жизни неравенство было как "!=" а так - что-то типа Код (Text): ORDER BY (`viewcount`-DATEDIFF(NOW(), `date`)*2) ASC только тип viewcount должен быть signed (со знаком), либо приводить его к такому через CAST()
Ни в коем случае, ваш вариант отсортирует по числу просмотров и только при равенстве просмотров - по дате. А мне необходимо, чтобы старая дата постепенно уходила вниз.
Спасибо огромное за внятный ответ. Вроде заработало в первом приближении вот так. Только всё-таки DESC. Сортировка от большего к меньшему, мы ищем популярные новости, а не отстойные. Код (Text): $result = mysql_query("SELECT * FROM news WHERE id<>'$id' ORDER BY (CAST(viewcount AS SIGNED) - DATEDIFF(NOW(), date)*2) DESC LIMIT 5");