Poster
Новичок
Архивные/актуальные новости. MySQL
Ребята, есть такая задача.
Сайт, н о в о с т и.
Актуальные и "архивные". Под "архивной" новостью подразумеваетя новость устаревшая по дате или если ей вручную поставлена пометка "архивная".
То есть в архив новость может перемещаться двумя способами:
1. истек срок, после которого новость автоматически перемещается в архив
2. новости принудительно поставлена пометка "архивная"
Первое условие легко выполнимо:
Неархивные:
SELECT * FROM news WHERE DATEDIFF(CURDATE(), date) <= 25;
Архивные:
SELECT * FROM news WHERE DATEDIFF(CURDATE(), date) > 25;
25 - количество дней, по истечении количества которых новость перемещается в архив.
Или же второе условие - если новости вручную поставлено "Архивная":
SELECT * FROM news WHERE archive = 'y';
Указание вручную "Архивная" является _приоритетным_ перед "архивированием" новости "по дате".
Теперь сформулирую вопрос.
Как соединить два запроса - отбор по дате и вручную так чтобы
- если новость "архивна" по дате, то ее можно "вытащить" из архива вручную, то есть невзирая на разницу дат?
у меня пока вот что думается, но криво это,
ВЫборка НЕархивных:
- гуд, выборка правильая.
Архивные:
но тогда ручная архивность не имеет приоритета...
Спасибо всем кто дочитал и вник.
Ребята, есть такая задача.
Сайт, н о в о с т и.
Актуальные и "архивные". Под "архивной" новостью подразумеваетя новость устаревшая по дате или если ей вручную поставлена пометка "архивная".
То есть в архив новость может перемещаться двумя способами:
1. истек срок, после которого новость автоматически перемещается в архив
2. новости принудительно поставлена пометка "архивная"
Первое условие легко выполнимо:
Неархивные:
SELECT * FROM news WHERE DATEDIFF(CURDATE(), date) <= 25;
Архивные:
SELECT * FROM news WHERE DATEDIFF(CURDATE(), date) > 25;
25 - количество дней, по истечении количества которых новость перемещается в архив.
Или же второе условие - если новости вручную поставлено "Архивная":
SELECT * FROM news WHERE archive = 'y';
Указание вручную "Архивная" является _приоритетным_ перед "архивированием" новости "по дате".
Теперь сформулирую вопрос.
Как соединить два запроса - отбор по дате и вручную так чтобы
- если новость "архивна" по дате, то ее можно "вытащить" из архива вручную, то есть невзирая на разницу дат?
у меня пока вот что думается, но криво это,
ВЫборка НЕархивных:
PHP:
$arch = "AND (archive = 'n' OR DATEDIFF(CURDATE(), date) <= 25)";
Архивные:
PHP:
$arch = "AND (archive = 'y' OR DATEDIFF(CURDATE(), date) > 25)";
Спасибо всем кто дочитал и вник.