|
Модераторы: skyboy |
|
swordfishik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 23.1.2008 Репутация: нет Всего: нет |
Всем привет. Есть 2 таблицы - "заявки" и "логи авторизации клиента". Связь между таблицами по полю `client_id`. Посмотрите пример, там я наглядно все выложил - тыц. Запрос конечно не верен, не могу придумать как его верно написать. Пока выводит все.
Как я вижу работу запроса - запрос выбирает все заявки, которые не заблокированы, потом ищет владельца заявки со статусом success и смотрит дату последнего его входа (сортируем по убыванию дабы самая свежая дата была вверху, указываем лимит 1), если дата последнего входа превышает 1 день, то выводим ИД этой заявки для дальнейшей обработки. Прошу помочь с запросом, перепробовал разные вариации запроса, но все не так. Спасибо. |
|||
|
||||
swordfishik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 23.1.2008 Репутация: нет Всего: нет |
Вот написал запрос - тыц, пока указал 1 DAY. По первым тестам работает, но мне не нравится, что пока просрочка не сработает, то выводится поле с пустым значением во втором столбце второй строки, нужно вторую строку вообще не выводить в этом случае, но как? И вообще как запрос составлен, лучше можно?
|
|||
|
||||
Akina (Online) |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 453 |
Где пояснения по структуре и наполнению? Где постановка задачи? трёп один...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
swordfishik |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 23.1.2008 Репутация: нет Всего: нет |
sqlfiddle работает с переменным успехом, поэтому выложу тут код:
Таблицы и заполнение:
Запрос по-первой ссылке (Запрос конечно не верен, не могу придумать как его верно написать. Пока выводит все.):
Запрос по-второй ссылке (Пока указал 1 DAY. По первым тестам работает, но мне не нравится, что пока просрочка не сработает, то выводится поле с пустым значением во втором столбце второй строки, нужно вторую строку вообще не выводить в этом случае, но как? И вообще как запрос составлен, лучше можно?):
|
||||||
|
|||||||
Garmahis |
|
|||
Опытный Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: 1 Всего: 4 |
Ты напиши что значат поля в таблице и понятнее что ты хочешь в запросе получить.
|
|||
|
||||
Akina (Online) |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 453 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
swordfishik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 23.1.2008 Репутация: нет Всего: нет |
client_bid - таблица заявок
-- client_bid_id - ид заявки -- client_id - ид того кто заявку составил -- client_bid_blocked - заблокирована или нет заявка client_login - таблица входов клиента в панель -- client_login_id - ид входа -- client_id - ид того кто вошел в панель -- client_login_date - дата и время входа -- client_login_type - тип входа (wait - ожидание кода подтверждения входа, success - успешный вход, failed - ошибка при входе) Нужно - выбрать заявки, которые являются просроченными (потом я их заблокирую). Просроченной заявкой я считаю ту, у которой создатель не входил в панель более 1 дня (цифра будет другая, для теста беру 1 день). Во втором запросе я почти добился того, что нужно, но хотелось бы довести запрос до ума. |
|||
|
||||
Garmahis |
|
|||
Опытный Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: 1 Всего: 4 |
Я не знаю как на mySQL но в MS SQL это можно сделать так:
Вам надо найти аналоги функций DATEADD и GETDATE |
|||
|
||||
Akina (Online) |
|
||||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 453 |
Т.е. у которого с момента последнего успешного входа прошло более 1 дня или у которого имеется промежуток между двумя последовательными успешными входами более 1 дня? Предполагаю первое. Тогда будет что-то типа:
Или
Это сообщение отредактировал(а) Akina - 27.10.2015, 13:43 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
swordfishik |
|
||||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 23.1.2008 Репутация: нет Всего: нет |
Вроде бы переписал, но результат не тот. Может неверно переписал конечно же.
Посидел еще немного, вот что вышло у меня:
Выводит теперь корректно 1 запись, пока 1 день не пройдет. |
||||
|
|||||
Garmahis |
|
|||
Опытный Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: 1 Всего: 4 |
Написал для MySQL
|
|||
|
||||
Akina (Online) |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 453 |
На будущее - если хотите адекватного тестирования - давайте литерал (константу) даты и эталонный ответ на приведённых данных. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
swordfishik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 23.1.2008 Репутация: нет Всего: нет |
||||
|
||||
Akina (Online) |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 453 |
А теперь представь, что заявка есть, а логинов нет вообще. Скажем, почистили таблицу. Моему запросу пох. Твоему - нет. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
swordfishik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 23.1.2008 Репутация: нет Всего: нет |
||||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |