SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 25.09.2010 15:07:03

godz89
Участник
Зарегистрирован: 25.09.2010
Сообщений: 1

Запрос с использованием IN

Помогите пожалуйста разобраться:
Есть две таблицы:

первая:
CITY
---------------------
city_id(int)  |  name(varchar)
---------------------
1 | Москва
2 | Питер
3 | Ростов


вторая:
MAIN
---------------------
id(int) | data(varchar)
---------------------
1 | 1,2
2 | 1,2,3

запрос:
SELECT city.name FROM city,main WHERE city.city_id IN(main.data) AND main.id = 1

данный запрос выдает только первую строку, а нужно чтобы выдавал сразу 1 и 2 из таблицы city поскольку в таблице main в первой строке идет перечисление в поле data.

Подскажите что не так ?

Спасибо.

Неактивен

 

#2 26.09.2010 01:28:43

FiMko
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 18.09.2009
Сообщений: 198

Re: Запрос с использованием IN

godz89 написал:

Помогите пожалуйста разобраться:
Подскажите что не так ?

Насколько я понимаю, так как вы делаете не получится. Более того, если бы, к примеру, ваша таблица CITY содержала бы следующие данные:


mysql> select * from city;
+---------+--------+
| city_id | name   |
+---------+--------+
|       0 | Moscow |
|       2 | Spb    |
|       3 | Rostov |
+---------+--------+
 
то ваш запрос и вовсе бы вернул пустой результат:

mysql> select city.name from city where city.city_id in (select data from main where id = 1);
Empty set (0.02 sec)
 
Почему? Это можно прочитать вот здесь http://bugs.mysql.com/bug.php?id=46992

Отредактированно FiMko (26.09.2010 01:29:31)

Неактивен

 

#3 26.09.2010 20:02:27

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Запрос с использованием IN

А вообще желаемое Вами достигается немного другой структурой
MAIN:
id | data
---------
1 | 1
1 | 2
2 | 1
2 | 2
2 | 3

Неактивен

 

Board footer

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