|
|
|
| у меня есть записи в базе...нужно выводить последние 5 добавленные и выводить их в течение 5 дней независимо от того какие были добавлены еще...в поле date_d я записываю время истечения отображения, как cформировать запрос? | |
|
|
|
|
|
|
|
для: OLi
(15.07.2011 в 14:12)
| | Хм... а поле date_d других полей в таблице какое значение принимает? Допустим отображаем мы данные, добавляются еще 10 новых записей, у них поле date_d будет какое? И как оно будет отличаться от текущего значения? Через 5 дней мы к ним должны автоматически перейти? Если да, нужно больше подробностей. | |
|
|
|
|
|
|
|
для: cheops
(15.07.2011 в 14:17)
| | Поле date_d формируется при добавлении записи, как текущее время в (с)+5 дней... | |
|
|
|
|
|
|
|
для: OLi
(15.07.2011 в 14:50)
| | Правильно ли я понимаю, что нужно отображать самые старые новости в интервале date_d > NOW()? Если да, тогда запрос может выглядеть следующим образом
SELECT * FROM tbl
WHERE date_d > NOW()
ORDER BY date_d
LIMIT 5
|
| |
|
|
|
|
|
|
|
для: cheops
(15.07.2011 в 14:53)
| | Не совсем..Постараюсь еще раз объяснить:
При добавлении в поле date_d записывается дата окончания отображения этой записи, рассчитанная на 5 дней...т-е в таком случае ваш запрос подходит, но могут быть добавлены в этот же день еще около 10 записей, которые исходя из вашего запроса date_d > NOW() опять таки отобразятся..но этого не надо делать - пока первая 5-ка записей не "провисела" на сайте отложенные ей 5 дней, а лишь потом отобразить следующие записи на 5 дней и тд | |
|
|
|
|
|
|
|
для: OLi
(15.07.2011 в 15:03)
| | Они не отобразятся, если вы им не увеличите значение date_d до 10 дней... вернее они отобразятся на несколько часов, пока у них не закончится период date_d, в момент когда у первых записей этот период закончится... может имеет смысл как-то коррелировать date_d? Или вообще пересмотреть систему отображения, не привязываясь к полю date_d. | |
|
|
|
|
|
|
|
для: cheops
(15.07.2011 в 16:33)
| | А как лучше сделать? По логике я думал так как выше | |
|
|
|
|
|
|
|
для: OLi
(15.07.2011 в 18:38)
| | Может как-то к первичному ключу привязаться, т.е. выводить эти пять дней эти пять ссылок, следующие - следующие, а в это время пусть они себе накапливаются. | |
|
|
|
|
|
|
|
для: cheops
(15.07.2011 в 19:33)
| | А как мне делать проверку на истекшие 5 дней? да по ключу не совсем понял.. | |
|
|
|
|
|
|
|
для: OLi
(15.07.2011 в 22:11)
| | Не очень понятно, я предлагаю алгоритм вроде того, какой исопльзуется для вывода цитаты дня, когда требуется выводить не случайную цитату, а одну за другой, ориентируясь на первичный ключ, когда вы достигаете конца таблицы, все начинается сначала, если вы таблицу заполняете со скоростью течения дней или быстрее, то к началу она уже не возвращается. Если вам такой подход интересен, можно его обсудить. | |
|
|
|
|
|
|
|
для: cheops
(15.07.2011 в 23:02)
| | Давайте обсудим | |
|
|
|
|
|
|
|
для: OLi
(15.07.2011 в 23:49)
| | Для одного значения, механизм может выглядеть следующим образом
SELECT * FROM tbl
WHERE id_position = (SELECT (1 + DAYOFYEAR(NOW()) % COUNT(*)) FROM tbl)
LIMIT 1
|
| |
|
|
|
|
|
|
|
для: cheops
(16.07.2011 в 10:43)
| | А можете дать пояснение к запросу? | |
|
|
|
|
|
|
|
для: OLi
(16.07.2011 в 13:46)
| | Количество дней в году мы делим на количество записей в таблице и берем от этого значения отстаток деления - его используем в качестве первичного ключа для вывода записи на текущий день. | |
|
|
|