SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 07.09.2009 12:10:00

PostFx
Участник
Зарегистрирован: 07.09.2009
Сообщений: 5

SELECT из двух таблиц

Привет всем.
Проблема, наверное, простая, но что-то бьюсь уже пол-утра.

Есть таблица Users (id,login,email,...), есть Users_IP (user_id, ip).
В таблице Users_IP хранятся пары user_id (id из таблицы Users) и ip (значение ip-адреса, с которого был осуществлен доступ).

Поиск по юзерам без учета ip:
select * from Users where login like '123%' and email like '456%'

Теперь побую просто поиск по ip, вот что получилось, но не работает :-(

SELECT Users.*, Users_IP.ip AS ip FROM Users LEFT JOIN Users_IP ON Users.id = Users_IP.user_id WHERE ip='[мой_айпи]'


С уважением, Дмитрий.

Отредактированно PostFx (07.09.2009 12:10:55)

Неактивен

 

#2 07.09.2009 13:02:24

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

Re: SELECT из двух таблиц

А в чем выражается не пработает?

Каков результат запроса

select * from User_IP where ip='[мой_айпи]';

Неактивен

 

#3 07.09.2009 13:19:17

PostFx
Участник
Зарегистрирован: 07.09.2009
Сообщений: 5

Re: SELECT из двух таблиц

"Не работает" выражается в "Column 'ip' in where clause is ambiguous"

Такой вариант, конечно, работает:

SELECT * FROM User_IP WHERE ip='[мой_айпи]';


Результат - список id пользователей, которые логинились с [мой_айпи]

Неактивен

 

#4 07.09.2009 13:30:14

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

Re: SELECT из двух таблиц

пишите WHERE User_IP.ip='[мой_айпи]';

Неактивен

 

#5 07.09.2009 14:10:32

PostFx
Участник
Зарегистрирован: 07.09.2009
Сообщений: 5

Re: SELECT из двух таблиц

vasya, большое спасибо, всего то надо было указать имя таблицы.
Оказывается, конструкция "Users_IP.ip AS ip" работает только в сфетченных данных ($row['ip']), для WHERE это не годится.

Неактивен

 

#6 07.09.2009 14:49:32

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

Re: SELECT из двух таблиц

Конструкция "Users_IP.ip AS ip" смысла не имеет, так как указывает, что колонка ip из таблицы Users_IP используется в запросе под именем ip. Однако имя колонки и так было ip.

А вот если у вас в таблице Users тоже есть поле ip, то непонятно какое из полей вы имеете в виду. Для этого нужно или писать полное имя (включая указание таблицы) Users_IP.ip, или использовать уникальный синоним - Users_IP.ip AS ipx .. WHERE ipx=

Неактивен

 

Board footer

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