Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[MySQL]Сделать запрос к базе данных для выбора не просроченных записей

21K
22 мая 2008 года
DeamonShan
65 / / 14.05.2008
есть таблица:

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, то тоже не выбирать...
8
22 мая 2008 года
mfender
3.5K / / 15.06.2005
SELECT * FROM table WHERE status<>3 AND time < требуЁмоё

PS.
1. Не используй слово time для имени поля - зарезервированное оно
2. Таймштампа я не заметил чегой-то
21K
22 мая 2008 года
DeamonShan
65 / / 14.05.2008
ты не понял малость условие....

нужно исключить старые (дольше 2 недель) строки со статусом 1, но выбрать новые (посл 2 недели) строки со статусом 1, при этом необходимо исключить строки со статусом 3.. то есть результат должен содержать:

строки со статусом 1, новые (за посл две недели..)
строки со статусом 2, все
строки со статусом 4, все

не должен содержать:

строки со статусом 3, все
строки со статусом 1, старые (2 недельной давности... и больше)
285
22 мая 2008 года
Romik
479 / / 24.11.2002
[highlight=sql]SELECT
*
FROM
table1
WHERE
TimeField > DATE_SUB(NOW(), INTERVAL 2 WEEKS)
AND
StatusField<>3[/highlight]
9.0K
22 мая 2008 года
Toxin_F
93 / / 03.01.2007
Цитата: DeamonShan

строки со статусом 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))

21K
22 мая 2008 года
DeamonShan
65 / / 14.05.2008
Таблица примерная.. там на самом деле сложная таблица... и совсем другие значения и статусов не 4 а больше))) скажем 20))) мне все их перечислять?
21K
22 мая 2008 года
DeamonShan
65 / / 14.05.2008
Romik, ваш запрос не подходит, потому что время статусов, отличные от 1, могут быть абсолютно любыми...
9.0K
22 мая 2008 года
Toxin_F
93 / / 03.01.2007
Цитата: DeamonShan
Таблица примерная.. там на самом деле сложная таблица... и совсем другие значения и статусов не 4 а больше))) скажем 20))) мне все их перечислять?


Какая таблица такие и запросы - примерные )

хотя....

SELECT
*
FROM
table_name
WHERE
table_name.`status` <> '3' OR
(table_name.`status` = '1' AND table_name.`time` > (UNIX_TIMESTAMP(CURRENT_TIMESTAMP)-1209600))

...так практичнее

285
22 мая 2008 года
Romik
479 / / 24.11.2002
Цитата: DeamonShan
Romik, ваш запрос не подходит, потому что время статусов, отличные от 1, могут быть абсолютно любыми...



B чём проблема? Вы книги по SQL когда-нибудь читали? дополнить условие выборки можете?
[highlight=sql] 1.
SELECT
*
FROM
table1
WHERE
(
StatusField=1
AND
TimeField > DATE_SUB(NOW(), INTERVAL 2 WEEKS)
)
AND
StatusField<>3 [/highlight]

21K
22 мая 2008 года
DeamonShan
65 / / 14.05.2008
 
Код:
$sql="select * from `ac_schet`
  where status <> 9 and (status = 0 and data  >  "
.(time()-$Prosrochka*7*24*60*60).")
   order by data desc
   "
;


вот ваш запрос в моем случае, результат пустой!!! я это уже несколько раз проделал
366
26 мая 2008 года
int
668 / / 30.03.2005
Цитата: DeamonShan
 
Код:
$sql="select * from `ac_schet`
  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). И имена полей на всякий случай заключай в апострофы чтобы путаницы с зарезервированными именами не было.

15
26 мая 2008 года
shaelf
2.7K / / 04.05.2005
Запрос отличается от того, что был приведён выше.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог