Я хочу присоединиться к двум столам. Нет проблем с этим. У меня проблема с совершенно другой вещью.
Вот мой код:
SELECT * FROM `table1`
JOIN `table2` ON `table1.`field`=`table2`.`field`
...
Основная проблема заключается в том, что table1.field
- это строка, разделенная запятыми. Есть ли хороший и быстрый способ разбить его?
Обновление
Я нашел функцию Федерико Кагнелутти
CREATE FUNCTION SPLIT_STR(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
Использование:
SELECT SPLIT_STR('a|bb|ccc|dd', '|', 3) as third;
Довольно полезно, но в качестве третьего параметра требуется целое число позиции. Во всяком случае, я не знаю количество слов, разделенных запятыми. По сути, это до 20 слов, но я не знаю, сколько.
Обновление 2
Чтобы уточнить мой вопрос. Вот что мне нравится (я знаю, что следующий запрос неверен):
SELECT * FROM `table1`
JOIN `table2` ON `table2`.`id` IN (`table1`.`field`)
Обновление 3
Примеры строк: table1.field
= '202, 185, 505', table2.field
= 202