Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбрать просроченные заявки 
V
    Опции темы
Garmahis
Дата 27.10.2015, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: 1
Всего: 4



Цитата(swordfishik @ 27.10.2015,  14:52)
Цитата(Garmahis @  27.10.2015,  13:44 Найти цитируемый пост)
Написал для MySQL

в результате пусто, должно вывести первую заявку под ИД 1, что у меня и вышло

Так посмотрите что у вас в таблице написано:
    (8, 1, '2015-10-26 18:45:34', 'success'),
    (9, 4, '2015-10-26 19:32:34', 'success'),
ТОесть и 1 и 4 заходили менее суток назад успешно. если вы измените время или дату чтобы было больше суток то все будет.
PM   Вверх
swordfishik
Дата 27.10.2015, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 23.1.2008

Репутация: нет
Всего: нет



Цитата(Akina @  27.10.2015,  13:50 Найти цитируемый пост)
Моему запросу пох. Твоему - нет.

Почему моему не пох? Мой запрос вернет 0 в этом случае, что вполне нормально для меня. Нет логов по входам, то нет от чего отолкнутся. Логи никогда не будут чистится. Даже если такое и случится, то там уже ручная блокировка этих заявок будет по дате создания заявки. Случай 1 на миллион.

Добавлено через 6 минут и 23 секунды
Garmahis, возьмем кусок из базы

Код

(92, 1, '2015-10-26 19:14:43', 'success'),
(93, 1, '2015-10-26 19:32:34', 'success'),
(94, 4, '2015-10-27 00:15:34', 'success'),
(95, 4, '2015-10-26 01:25:46', 'failed');


если по моим условиям строка с failed сразу отпадает, далее сработает сортировка на убывание

Код

(94, 4, '2015-10-27 00:15:34', 'success'),
(93, 1, '2015-10-26 19:32:34', 'success'),
(92, 1, '2015-10-26 19:14:43', 'success'),


после я использую лимит 1 и связь между таблицами, что даст для первого клиента такую выборку

Код

(94, 4, '2015-10-27 00:15:34', 'success'),


а для второго

Код

(93, 1, '2015-10-26 19:32:34', 'success'),


Если мы применим еще условие со временным интервалом в 1 день, то второго сразу нам должно вывести, для него уже 1 день прошел, а вот для перого нет и мы его не выводим.
PM MAIL   Вверх
Akina
Дата 27.10.2015, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 453



Цитата(swordfishik @  27.10.2015,  15:04 Найти цитируемый пост)
Мой запрос вернет 0 в этом случае, что вполне нормально для меня.

Давай уточним задачу.
Твоя версия такая: вывести, если последний вход сделан более суток назад.
Моя версия: вывести, если за последние сутки не было сделано входа.
Какая формулировка правильная?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Garmahis
Дата 27.10.2015, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: 1
Всего: 4



Не понял. У обоих интервал меньше одного дня. сейчас 2015-10-27 14:14 соотвественно все кто больше 2015-10-26 14:14 меньше суток.
Соотвественно второй попадет в выборку после 19:32 сегодняшнего вечера

Это сообщение отредактировал(а) Garmahis - 27.10.2015, 14:18
PM   Вверх
swordfishik
Дата 27.10.2015, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 23.1.2008

Репутация: нет
Всего: нет



Цитата(Akina @  27.10.2015,  14:10 Найти цитируемый пост)
Твоя версия такая: вывести, если последний вход сделан более суток назад.

Эта формулировка. Т.е. если человек не входил более суток в систему, мы его заявку считаем просроченой.

Добавлено @ 14:22
Цитата(Garmahis @  27.10.2015,  14:15 Найти цитируемый пост)
Не понял.

прошу прощения, ввел в заблуждение, да вы правы, в датах я запутался

Добавлено @ 14:27
GarmahisAkina, ваши варианты верны, это я с датами запутался уже, спасибо

Это сообщение отредактировал(а) swordfishik - 27.10.2015, 14:27
PM MAIL   Вверх
swordfishik
Дата 27.10.2015, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 23.1.2008

Репутация: нет
Всего: нет



Цитата(Akina @  27.10.2015,  13:40 Найти цитируемый пост)
Предполагаю первое. Тогда будет что-то типа:

Конструкция
Код

SELECT 1

предполагает иднтичность этой?
Код

.................
ORDER BY `client_login`.`client_login_date` DESC
LIMIT 1


PM MAIL   Вверх
Akina
Дата 27.10.2015, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 453



Цитата(swordfishik @  27.10.2015,  15:38 Найти цитируемый пост)
Конструкция
Код

SELECT 1

предполагает иднтичность этой?
Код

ORDER BY `client_login`.`client_login_date` DESC
LIMIT 1

Нет.
В конструкции [NOT] EXISTS проверяется сам факт наличия записи, соответствующей условиям отбора, и пофиг, что там в выходном наборе. Выводить при этом в выходной набор статический литерал проще, дешевле и быстрее, чем поле из записи таблицы.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
swordfishik
Дата 27.10.2015, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 23.1.2008

Репутация: нет
Всего: нет



Цитата(Akina @  27.10.2015,  14:47 Найти цитируемый пост)
В конструкции [NOT] EXISTS проверяется сам факт наличия записи, соответствующей условиям отбора, и пофиг, что там в выходном наборе. Выводить при этом в выходной набор статический литерал проще, дешевле и быстрее, чем поле из записи таблицы. 

Гениально, учту на будущее. Теперь я понял, почему вы не использовали обратную сортировку с лимитом, они роли не играют. Хотя лимит 1 можно и использовать, дабы меньше отбирало во вложенном запросе, все же быстрей будет, верно?
PM MAIL   Вверх
Akina
Дата 27.10.2015, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 453



Цитата(swordfishik @  27.10.2015,  16:04 Найти цитируемый пост)
лимит 1 можно и использовать, дабы меньше отбирало во вложенном запросе

MySQL при обработке конструкции [NOT] EXISTS прекращает выполнение подзапроса, как только найдётся первая соответствующая запись, и это явно описывается документацией. LIMIT абсолютно не имеет смысла.

Добавлено через 1 минуту и 35 секунд
Точно так же обрабатывается и =ANY (=SOME). И инверсно обрабатывается =ALL.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
swordfishik
Дата 27.10.2015, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 23.1.2008

Репутация: нет
Всего: нет



Цитата(Akina @  27.10.2015,  15:10 Найти цитируемый пост)
и это явно описывается документацией

спасибо, упустил этот момент я
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1637 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.