В базе есть две таблицы. нужно вывести все данные из первой добавляя в массив значение одного из полей второй. Делаю такой запрос: Код (Text): SELECT tab1.id, tab1.name, tab2.info FROM tab1, tab2 WHERE tab1.id LIKE %tab2.id% LIMIT 0 , 30 Почему LIKE а не = Дело в том, что tab2.id содержит не один id из первой а несколько разделённых запятой. Например 11,15,19 Но именно из-за LIKE и пошли проблемы. Не хочет он ничего выбирать. При = всё идёт как надо. Как сформировать запрос так, чтобы он выводил нужную мне инфу?
если делать правильно, то нужно переделывать структуру. а неправильных способов много, не все рабочие, не все устроят, не факт, что в дальнейшем не повторится похожая проблема
IN ресурсоёмкая операция. а если поменять местами tab2.id LIKE %tab1.id% ?? ведь tab2.id в списке может содержать %tab1.id%
Тут скорее вопрос поддержки старого чужого пока делается новое своё. Поэтому костыль и нужен ибо решать проблему ещё одним запросом в цикле вариант, на мой взгляд, не шибко лучший.
IceCream условия: tab2.id содержит строку "14,15,16,24,32,36", tab1.id содержит число 5. вопрос: будет ли совпадение при like ? ответ: да, будет ложное совпадение. итог: не подходит. оптимальным решением на данный момент будет написание собственной хранимой функции поиска числа в строке
IceCream тогда, если (!) сумеешь прикрутить лайк между двух полей - будешь радоваться жизни. но что-то мне подсказывает, что это не так просто так что оптимальным (и более-менее правильным) вариантом остаётся хранимая функция