Соединение MySQL на основе регулярных выражений - PullRequest
1 голос
/ 26 июня 2009

У меня есть таблица продуктов , где один из столбцов относится к продукту . relatedproducts содержит строки связанных идентификаторов продуктов ( столбец productid ), разделенных двоеточием, например, abc-123: foo-prod: ada69 и т. д. Из-за некачественного дизайна существует вероятность того, что продукт может быть удален из таблицы продуктов и на него все же могут ссылаться в столбце «связанные продукты».

Итак, мне нужен SQL-запрос, который проходит по всем строкам в таблице продуктов, проверяет столбец relatedproducts, анализируя данные (и, следовательно, анализируя заголовок), и проверяет, существует ли каждый ссылочный продукт в одной и той же таблице продуктов. Тем не менее, я новичок в SQL и испытываю затруднения при написании запроса join / regexp, чтобы сделать это.

Любая помощь будет оценена!

1 Ответ

3 голосов
/ 26 июня 2009

MySQL может соответствовать regexp, но, к сожалению, не может вернуть соответствующую подстроку.

Вам лучше сделать это, используя FIND_IN_SET:

SELECT  *
FROM    products p
JOIN    product rel
ON      FIND_IN_SET(rel.id, REPLACE(p.related, ':', ','))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...