08.08.2011, 12:59
|
Интересующийся
|
|
Регистрация: 29.03.2011
Сообщений: 23
|
|
Вопрос по SQL запросу
есть SQL запрос
SELECT 'men_name','men_fam' FROM 'crm_fiz' WHERE 'men_id' IN (SELECT 'men_vlad' FROM 'ruk' WHERE 'Name' = 'la' AND 'Fam' = 'pa')
'men_vlad' содержит числа через запятую 1,2,3,4(varchar)
Если я диапазон ввожу вручную т.е. SELECT 'men_name','men_fam' FROM 'crm_fiz' WHERE 'men_id' IN (1,2,3,4) , сервер возвращает нужные мне значения,
но через вложенный запрос возвращает пустоту.
Кто знает почему, ответьте , если несложно.
|
|
08.08.2011, 13:10
|
Профессор
|
|
Регистрация: 29.06.2011
Сообщений: 445
|
|
А что возвращает подзапрос?
|
|
08.08.2011, 13:17
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Mazai
|
'men_vlad' содержит числа через запятую 1,2,3,4(varchar)
...
Кто знает почему, ответьте , если несложно.
|
Ответ очевиден. Поскольку
IN (1,2,3,4)
не эквивалентен
IN ("1,2,3,4")
Подзапрос должен возвращать таблицу из
1
2
3
4
а не строку
"1,2,3,4"
|
|
08.08.2011, 13:17
|
Интересующийся
|
|
Регистрация: 29.03.2011
Сообщений: 23
|
|
Что можно предпринять в таком случае?
|
|
08.08.2011, 13:20
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Mazai
|
Что можно предпринять в таком случае?
|
А что хранится (идеологически) в поле men_vlad?
|
|
08.08.2011, 13:27
|
Интересующийся
|
|
Регистрация: 29.03.2011
Сообщений: 23
|
|
Хранятся данные о том , какими менеджерами управляет кооридинатор (по id сотвественно)
|
|
08.08.2011, 13:32
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Mazai
|
какими менеджерами управляет кооридинатор
|
Однозначно менять структуру хранения данных! Такого рода данные нужно хранить в другой связаной таблице.
Вот тогда правильный подзапрос вернёт то, что тебе нужно...
|
|
08.08.2011, 13:37
|
Интересующийся
|
|
Регистрация: 29.03.2011
Сообщений: 23
|
|
ну что-ж спасибо)
|
|
08.08.2011, 13:51
|
Профессор
|
|
Регистрация: 29.06.2011
Сообщений: 445
|
|
На самом деле есть еще вариант.
SELECT 'men_name','men_fam' FROM 'crm_fiz'
WHERE FIND_IN_SET(men_id, (SELECT 'men_vlad' FROM 'ruk' WHERE 'Name' = 'la' AND 'Fam' = 'pa'))
Тогда структуру базы не надо переделывать. Но лучше бы, конечно переделать, как сказано выше через связанные таблицы.
|
|
08.08.2011, 14:06
|
Интересующийся
|
|
Регистрация: 29.03.2011
Сообщений: 23
|
|
Сообщение от ваый
|
На самом деле есть еще вариант.
SELECT 'men_name','men_fam' FROM 'crm_fiz'
WHERE FIND_IN_SET(men_id, (SELECT 'men_vlad' FROM 'ruk' WHERE 'Name' = 'la' AND 'Fam' = 'pa'))
Тогда структуру базы не надо переделывать. Но лучше бы, конечно переделать, как сказано выше через связанные таблицы.
|
Спасибо , ваш вариант работает, структуру сейчас менять уже поздно, база построена.
|
|
|
|