SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.05.2017 02:03:14

Naykon
Участник
Зарегистрирован: 02.02.2013
Сообщений: 7

Проверка на наличие 2 значений в таблице.

Есть таблица из 2 полей.
steamid ip
и то и другое может повторяться т.е они не являются уникальными.

Как отправить такой запрос в базу чтоб он вернул bool значение или же мне просто нужно узнать есть ли такой steamid и\или ip в таблице, при чем сделать это нужно в 1 запросе.

Вернуть должно так:
steamid = true\false
ip = true\false

и если не сложно 2 вариант: чтоб возвращало не true\false а VARCHAR . Если совпадений не найдено то возвращало NULL (пустую строку).

Вернуть должно так:
steamid = 'STEAM_ID00123123'\'NULL' - если нет такого стимид
ip = '192.168.0.1'\'NULL' - если нет такого ip

Благодарю за внимание.

Неактивен

 

#2 10.05.2017 03:17:46

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проверка на наличие 2 значений в таблице.

mysql> select 'steamid' `имя столбца`, ifnull(null,(select steamid from test where steamid = 'STEAM_ID00123129')) `значение`
union all
select 'ip', ifnull(null,(select ip from test where ip = '192.168.0.1'));
+-----------------------+------------------+
| имя столбца           | значение         |
+-----------------------+------------------+
| steamid               | NULL             |
| ip                    | 192.168.0.1      |
+-----------------------+------------------+

Неактивен

 

#3 10.05.2017 04:47:38

Naykon
Участник
Зарегистрирован: 02.02.2013
Сообщений: 7

Re: Проверка на наличие 2 значений в таблице.

Большое спасибо, все работает как нужно.

Неактивен

 

#4 10.05.2017 05:31:05

Naykon
Участник
Зарегистрирован: 02.02.2013
Сообщений: 7

Re: Проверка на наличие 2 значений в таблице.

vasya написал:

mysql> select 'steamid' `имя столбца`, ifnull(null,(select steamid from test where steamid = 'STEAM_ID00123129')) `значение`
union all
select 'ip', ifnull(null,(select ip from test where ip = '192.168.0.1'));
+-----------------------+------------------+
| имя столбца           | значение         |
+-----------------------+------------------+
| steamid               | NULL             |
| ip                    | 192.168.0.1      |
+-----------------------+------------------+

еще 1 маленький вопрос.. я пишу на pawn и он почему-то при получении CallBack (ответа)
Запрос:
select 'steamid' `имя столбца`, ifnull(null,(select steamid from test where steamid = '12345')) `значение` union all select 'ip', ifnull(null,(select ip from test where ip = '1.1.1.1'))

Ответ:
char Steam_ID[32];
char Ip[16];
SQL_FetchString(hndl, 0, Steam_ID, 32);
SQL_FetchString(hndl, 1, Ip, 16);
Steam_ID = "steaimid" //а должно быть 12345
Ip = "ip" //а должно быть 1.1.1.1

Дам пример рабочего SELECT запроса (который успешно работает на этом языке):
Запрос: SELECT ip FROM client WHERE steamid='12345'
Ответ:
char Ip[16];
SQL_FetchString(hndl, 0, Ip, 16);
Ip = "1.1.1.1" //То что и нужно.

А еще ругается в логах: Subquery returns more than 1 row (ругается на то что в базе несколько одинаковых значений в 1 столбце - но так я и задумывал, нужно чтоб не ругалось и работало)

Отредактированно Naykon (10.05.2017 05:50:23)

Неактивен

 

#5 10.05.2017 15:57:04

Naykon
Участник
Зарегистрирован: 02.02.2013
Сообщений: 7

Re: Проверка на наличие 2 значений в таблице.

Не доступно обьяснил или это сверх-нерешаемая задача?

Неактивен

 

#6 10.05.2017 16:24:51

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Проверка на наличие 2 значений в таблице.

На этот форум едва ли заходит много специалистов по pawn, лучше на их специализированном форуме спросить.

Что касается

Subquery returns more than 1 row

То это к тому, что подзапрос
select steamid from test where steamid = '12345'
возвращает больше чем один ряд, а ifnull ожидает, что вернет 1, вот и ошибка.
Вылечить можно разными способами, например принудительно указав, что нужен только один результирующий row, select steamid from test where steamid = '12345' limit 1


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson