Forum Webscript.Ru
Общие => Базы данных => Тема начата: a@mail.dux.ru от 27 Октября 2003, 00:44:07
-
Ситуевина такая:
у меня есть в MySQL
1) поле list (в таблице t1) в нем данные (например): 1,2,3,4,11
2) поле idN (в таблице t2) в нем данные (например): 1
мне нужно
select * from t1,t2 where t2.id in (list)
но так не работает
делаю вокруг:
select * from t1,t2 where instr(list , idN )
Так работает, НО! не правильно потому как 1 попадает и в 1 и в 11
пытался написать
select * from t1,t2 where instr(\',list,\' , \',idN,\' )
Эта Идея понятна? я хочу представить данные из поля \'list\' как
,1,2,3,4,11, а не так как они там представлены 1,2,3,4,11 (запятые по бокам добавил. то есть)
Но так MySQL понимает что я хочу искать в тексте \',list,\' а не в поле list
Естественно смотрел доку по instr но там все лаконично:
INSTR(str,substr)
Помогите, плиз, кто сможет. :)
Может есть и изящнее подход , а я его не вижу?
спасибо
-
тебе обязательно это делать средствами mysql, в консоли?
руками сформировать с нужными запятыми не получается?
есть и более изящный подход. тип поля set
-
предолжение хорошее, только я не буду знать, что содержиться в поле list . если специально не залезу в базу. :(
-
a@mail.dux.ru
проблему можно решить через REGEXP, примерно так:
SELECT ... WHERE list REGEXP concat(\'[[:<:]]\',idn,\'[[:>:]]\');
но это будет тормозить на больших объемах, так что пересмотри структуру своей БД
-
Спасибо за подсказку . сделал вот так:
select * from t1,t2 where instr(\',list,\' ,concat(\',\',$idN,\',\') )
а в таблице 1 в поле, откуда берется list пришлось в начале и в конце данных прибавить по ",0"
то есть согласно моего примера (п.1) стало 0,1,2,3,4,11,0