Как выбрать информацию из базы данных, которая 1 день, 1 неделя? - PullRequest
0 голосов
/ 22 декабря 2011

Мне нужно изменить свой запрос, чтобы выбрать информацию, которая имеет возраст 1 день и 1 неделю. У меня есть две таблицы: одна для голосов, другая для статей, и она должна посмотреть на st_date из таблицы статей.

Запрос

SELECT stories.*, SUM(votes.vote_value) as 'total_votes' 
FROM stories 
    JOIN votes ON stories.id = votes.item_name 
GROUP BY stories.id 
ORDER BY total_votes DESC LIMIT 10

Структура базы данных:

Таблица рассказов

Stories table

Таблица голосов enter image description here

Ответы [ 5 ]

3 голосов
/ 22 декабря 2011

Неделя - это всегда 7 дней, поэтому вам действительно нужны данные за 8 дней.

WHERE st_date >= DATE_SUB(NOW(), INTERVAL 8 DAY)

Ваш полный запрос будет:

SELECT stories.*, SUM(votes.vote_value) as 'total_votes' 
FROM stories 
    JOIN votes ON stories.id = votes.item_name 
WHERE stories.st_date >= DATE_SUB(NOW(), INTERVAL 8 DAY)
GROUP BY stories.id 
ORDER BY total_votes DESC LIMIT 10
1 голос
/ 22 декабря 2011

Вам нужно добавить оператор WHERE что-то вроде

SELECT stories.*, SUM(votes.vote_value) as 'total_votes' 
FROM stories 
JOIN votes ON stories.id = votes.item_name 
WHERE PERIOD_DIFF(CURRENT_DATE , stories.st_date) <  1
GROUP BY stories.id 
ORDER BY total_votes DESC LIMIT 10
1 голос
/ 22 декабря 2011

выглядит примерно так ...

ГДЕ st_date> = сейчас, интервал 8 дней

0 голосов
/ 22 декабря 2011

вы можете найти результат в любом диапазоне дат использования

st_date >= start_date AND st_date <=end_date
0 голосов
/ 22 декабря 2011

Вы можете сделать это, используя DATEDIF() mysql function

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...