Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Если есть в базе соответствия то вернуть 0, если нет то выполнить запрос.  [new]
Nteee
Member

Откуда:
Сообщений: 7
Здравствуйте, сразу скажу что я не силен в MySql и если что-то получается то только методом проб и ошибок, поэтому пишу сюда т.к даже не знаю с какой стороны подойти.

В базе есть 3 столбца ip (PRIMARY VARCHAR) , time (INT), name (VARCHAR)

Мне нужно одним запросом сделать проверку и запрос если проверка прошла.
Если в базе есть ip (192.168.0.1) и time >= 1502324324 то нужно вернуть 0 (сообщить программе), если условие не прошло проверку то нужно изменить time = 15 и name - 'Коля'.

и если позволите 2 задачка:

Если в базе есть ip (192.168.0.1) и time < 1502324324 то нужно удалить эту запись из таблицы.

Очень рассчитываю на конкретную помощь в примере и желательно с пояснением. Спасибо.
24 сен 17, 02:46    [20818634]     Ответить | Цитировать Сообщить модератору
 Re: Если есть в базе соответствия то вернуть 0, если нет то выполнить запрос.  [new]
Nteee
Member

Откуда:
Сообщений: 7
Поправлю себя, говоря "базе" - имел введу в таблице.
24 сен 17, 02:47    [20818635]     Ответить | Цитировать Сообщить модератору
 Re: Если есть в базе соответствия то вернуть 0, если нет то выполнить запрос.  [new]
javajdbc
Member

Откуда: Montreal
Сообщений: 17084
Nteee,


Nteee
Если в базе есть ip (192.168.0.1) и time < 1502324324 то нужно удалить эту запись из таблицы.


delete from table 1
where ip = '192.168.0.1'
and time < 1502324324

Nteee
Если в базе есть ip (192.168.0.1) и time >= 1502324324 то нужно вернуть 0 (сообщить программе), если условие не прошло проверку то нужно изменить time = 15 и name - 'Коля'.


..изменить в КАКОЙ записи?
24 сен 17, 04:45    [20818643]     Ответить | Цитировать Сообщить модератору
 Re: Если есть в базе соответствия то вернуть 0, если нет то выполнить запрос.  [new]
Nteee
Member

Откуда:
Сообщений: 7
В записи которая соответствует ip (192.168.0.1) - это уникальная запись в таблице.
24 сен 17, 05:20    [20818648]     Ответить | Цитировать Сообщить модератору
 Re: Если есть в базе соответствия то вернуть 0, если нет то выполнить запрос.  [new]
Nteee
Member

Откуда:
Сообщений: 7
В таблице clients есть 3 поля: ip (PRIMARY - уникальное), name, time
Нужно отправить запрос так чтоб он делал следующее.. Если в таблице есть ip = 192.168.0.1 и time > 12345 то ничего не делать и вернуть ответ (Callback) = 0, а если условие выполняется то нужно изменить time на 54321 и изменить name = Коля, после чего вернуть ответ (Callback)= 1;

Необходимо учесть .. что в таблице может быть такой ip, а может и не быть... поэтому важно учесть особенности UPDATE и INSERT при построении запроса. (ON DUPLICATE KEY UPDATE - поможет)

Очень прошу помочь опытных пользователей. Спасибо.

Вот я на одном форуме по php задал вопрос может тут я более понятно объяснил цель!
24 сен 17, 05:21    [20818649]     Ответить | Цитировать Сообщить модератору
 Re: Если есть в базе соответствия то вернуть 0, если нет то выполнить запрос.  [new]
javajdbc
Member

Откуда: Montreal
Сообщений: 17084
Nteee
В таблице clients есть 3 поля: ip (PRIMARY - уникальное), name, time
Нужно отправить запрос так чтоб он делал следующее.. Если в таблице есть ip = 192.168.0.1 и time > 12345 то ничего не делать и вернуть ответ (Callback) = 0, а если условие выполняется то нужно изменить time на 54321 и изменить name = Коля, после чего вернуть ответ (Callback)= 1;

Необходимо учесть .. что в таблице может быть такой ip, а может и не быть... поэтому важно учесть особенности UPDATE и INSERT при построении запроса. (ON DUPLICATE KEY UPDATE - поможет)

Очень прошу помочь опытных пользователей. Спасибо.

Вот я на одном форуме по php задал вопрос может тут я более понятно объяснил цель!



ок, где то близко, но все равно не 100%. Еше раз --
у вас 2 или 3 варианта или сколько?

1. 192.168.0.1 есть и time > 12345 (имя не важно) -- вернуть (0)
2. 192.168.0.1 есть и time > 12345 (имя не важно)-- апдате тиме 12345 и имя коля
3. записи 192.168.0.1 нет -- делаем что?
4. есть несколько записей с 192.168.0.1 -- делаем что?

связана ли задача 2 с задачей 1?
24 сен 17, 05:34    [20818652]     Ответить | Цитировать Сообщить модератору
 Re: Если есть в базе соответствия то вернуть 0, если нет то выполнить запрос.  [new]
Nteee
Member

Откуда:
Сообщений: 7
3. записи 192.168.0.1 нет -- делаем что? - То мы добавляем ее с указанием time 34321 и name - Коля
4. есть несколько записей с 192.168.0.1 -- делаем что? - а вот такого быть не должно т.к это уникальное поле.. и в базе помечено как уникальное - PRIMARY

Задача 1 и задача 2 не связаны между собой.
24 сен 17, 05:52    [20818655]     Ответить | Цитировать Сообщить модератору
 Re: Если есть в базе соответствия то вернуть 0, если нет то выполнить запрос.  [new]
javajdbc
Member

Откуда: Montreal
Сообщений: 17084
Nteee
3. записи 192.168.0.1 нет -- делаем что? - То мы добавляем ее с указанием time 34321 и name - Коля
4. есть несколько записей с 192.168.0.1 -- делаем что? - а вот такого быть не должно т.к это уникальное поле.. и в базе помечено как уникальное - PRIMARY

Задача 1 и задача 2 не связаны между собой.


...нет одним ударом такую задачу на MуSQL не решить
(на СКл Сервере -- можно).

Варинат решения -- несколько запросов в трансакции:

* начать трансакцию
* INSERT IGNORE .... -- будет чистая вставка при отсутсвии ИП
* UPDATE TABLE tbl
set time = 12345,
name = 'Kolia'
WHERE ip = '127.0.0.1'
and time < 12345
* commit
24 сен 17, 06:33    [20818656]     Ответить | Цитировать Сообщить модератору
 Re: Если есть в базе соответствия то вернуть 0, если нет то выполнить запрос.  [new]
tip78
Member

Откуда: Москва
Сообщений: 444
IP лучше хранить в INT: SELECT INET_ATON('192.168.2.1');
и обратно: SELECT INET_NTOA(INET_ATON('192.168.2.1'));
а вот время лучше хранить в TIMESTAMP или DATE
24 сен 17, 16:02    [20818963]     Ответить | Цитировать Сообщить модератору
 Re: Если есть в базе соответствия то вернуть 0, если нет то выполнить запрос.  [new]
tip78
Member

Откуда: Москва
Сообщений: 444
в пхп ф-я ip2long()
24 сен 17, 16:02    [20818966]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить