вопрос
Есть запрос
В ячейке t1.row данные хранятся в цифровом формате, через кому, а чтобы вывести все данные нужно заменить эту кому на or t2.id = проблема в том, что реплейс не срабатывает в mysql, приходится использовать два запроса, первый на выборку, затем через str_replace меняем значение и вписываем в новый запрос, как этого избежать?
$db->query("SELECT a.*, c.* FROM ".PREFIX."_table1_list t1 LEFT JOIN ".PREFIX."_table2 t2 ON t2.id = REPLACE(t1.row,',',' or t2.id = ')");
В ячейке t1.row данные хранятся в цифровом формате, через кому, а чтобы вывести все данные нужно заменить эту кому на or t2.id = проблема в том, что реплейс не срабатывает в mysql, приходится использовать два запроса, первый на выборку, затем через str_replace меняем значение и вписываем в новый запрос, как этого избежать?
В MySQL можно использовать функцию REPLACE внутри запроса для замены запятых на строку ' or t2.id = '.
В вашем случае, запрос может выглядеть следующим образом:
Вместо REPLACE мы используем функцию FIND_IN_SET, которая ищет значение t2.id в строке, разделенной запятыми, и возвращает его позицию. Затем мы проверяем, что эта позиция больше нуля, чтобы убедиться, что значение найдено.
Таким образом, данный запрос выполняет выборку всех записей из таблицы table1_list, в которых значение поля row содержит значение, указанное в поле id таблицы table2.
Вы можете адаптировать этот запрос для своей базы данных и использовать его в вашем коде.
В вашем случае, запрос может выглядеть следующим образом:
$db->query("SELECT a.*, c.* FROM ".PREFIX."_table1_list t1 LEFT JOIN ".PREFIX."_table2 t2 ON FIND_IN_SET(t2.id, REPLACE(t1.row, ',', ' or t2.id = ')) > 0");
Вместо REPLACE мы используем функцию FIND_IN_SET, которая ищет значение t2.id в строке, разделенной запятыми, и возвращает его позицию. Затем мы проверяем, что эта позиция больше нуля, чтобы убедиться, что значение найдено.
Таким образом, данный запрос выполняет выборку всех записей из таблицы table1_list, в которых значение поля row содержит значение, указанное в поле id таблицы table2.
Вы можете адаптировать этот запрос для своей базы данных и использовать его в вашем коде.