В таблице ex1 есть столбец vars, где значения записаны в формате "1,2,3" Есть таблица ex2 и столбец id (допустим я сделал выборку и получил $ex2[id]) Надо сделать запрос SELECT * FROM ex1 WHERE (одно из значений vars) = $ex2[id] Как построить такой запрос? Я не понимаю с какой стороны подойти к решению
LAlexS, очень неудобное представление vars вы выбрали!!! SQL не предназначен для связей "с подстрокой". Но раз уж пошла такая пьянка, у меня было в практике подобное. Приходится использовать сравнение LIKE, причем в такой форме, в которой заведомо не будут использованы индексы, стало быть подходит только для маленьких таблиц. Добавлено спустя 3 минуты 45 секунд: FIZy_, ваша ссылка такая же непонятная в данном контексте, как и ваш никнейм )))
вы ему говорите как сделать так как не надо делать =) перестаньте! =) он же воспользуется предложенным решением и ничего не будет менять!
вредные советы на php.ru ! честно, я думаю ему звидец полюбому. можно подумать кто-то поумнел после "перестаньте", "не надо так делать", "осторожно высокое напряжение".
надо будет добавить таблицу с структурой типа id, значение и если у тебя сейчас через запятую в пятой строке идут 10, 15, 18 то будет три строки 5, 10 5, 15 5, 18 и выборка простейшая
Не фигово. А очень хорошо. Фигово, это когда думаешь, что твой код идеален. На самом деле всегда есть место рефакторингу, на том стоял и стоять будет клан программистов. А по сути - можно LIKE использовать. Вот так примерно: Код (Text): "SELECT * FROM ex1 WHERE vars LIKE '%". $vars .",%'" ну или как то рядом. Хотя парни дело говорят, нужно менять архитектуру.