[MySQL]Сделать запрос к базе данных для выбора не просроченных записей
id name time status
1 Ivan 125485936 1
2 Serg 5448755155 3
итд
Статусы: 1, 2, 3, 4...
time - timestamp
как вывести список пользователей за последние две недели со статусом не равной 1?? при этом пользователи со статусом 3 вообще не должны выводится...
то есть:
"selest * from table where stat<>3"
сюда еще добавить условие, если запись двухнедельной давности и его статус 1, то тоже не выбирать...
PS.
1. Не используй слово time для имени поля - зарезервированное оно
2. Таймштампа я не заметил чегой-то
нужно исключить старые (дольше 2 недель) строки со статусом 1, но выбрать новые (посл 2 недели) строки со статусом 1, при этом необходимо исключить строки со статусом 3.. то есть результат должен содержать:
строки со статусом 1, новые (за посл две недели..)
строки со статусом 2, все
строки со статусом 4, все
не должен содержать:
строки со статусом 3, все
строки со статусом 1, старые (2 недельной давности... и больше)
*
FROM
table1
WHERE
TimeField > DATE_SUB(NOW(), INTERVAL 2 WEEKS)
AND
StatusField<>3[/highlight]
строки со статусом 1, новые (за посл две недели..)
строки со статусом 2, все
строки со статусом 4, все
не должен содержать:
строки со статусом 3, все
строки со статусом 1, старые (2 недельной давности... и больше)
Кстати, status тоже лучше не использовать оно зарезервированное.
SELECT
*
FROM
table_name
WHERE
table_name.`status` = '2' OR
table_name.`status` = '4' OR
(table_name.`status` = '1' AND table_name.`time` > (UNIX_TIMESTAMP(CURRENT_TIMESTAMP)-1209600))
Какая таблица такие и запросы - примерные )
хотя....
SELECT
*
FROM
table_name
WHERE
table_name.`status` <> '3' OR
(table_name.`status` = '1' AND table_name.`time` > (UNIX_TIMESTAMP(CURRENT_TIMESTAMP)-1209600))
...так практичнее
B чём проблема? Вы книги по SQL когда-нибудь читали? дополнить условие выборки можете?
[highlight=sql] 1.
SELECT
*
FROM
table1
WHERE
(
StatusField=1
AND
TimeField > DATE_SUB(NOW(), INTERVAL 2 WEEKS)
)
AND
StatusField<>3 [/highlight]
where status <> 9 and (status = 0 and data > ".(time()-$Prosrochka*7*24*60*60).")
order by data desc
";
вот ваш запрос в моем случае, результат пустой!!! я это уже несколько раз проделал
where status <> 9 and (status = 0 and data > ".(time()-$Prosrochka*7*24*60*60).")
order by data desc
";
вот ваш запрос в моем случае, результат пустой!!! я это уже несколько раз проделал
А зачем скобки если там везде умножение? И вообще (status != 9 and status = 0) можно заменить на просто (status = 0). И имена полей на всякий случай заключай в апострофы чтобы путаницы с зарезервированными именами не было.