MySQL комплексное обновление и замена - PullRequest
1 голос
/ 10 октября 2010

У меня есть интересный запрос, который мне интересен, может ли кто-нибудь помочь с этим?

По сути, у меня есть три таблицы: Title, Attribute_Value

Title содержит список таких шаблонов, как«Создано {Date} {User} в {Category}», затем в таблице атрибутов у меня есть строки, содержащие определение параметров, заключенных в фигурные скобки.

Затем в таблице attribute_value у меня естьзначения.

Проблема, с которой я столкнулся, заключается в том, что запрос не сохраняет замену в каждой строке до тех пор, пока запрос не будет завершен, что означает, что строка получает только последнее обновление, не завершенное.

update Title inner join Attribute_Value on Attribute_Value.GenericID = Title.CollectibleID and Attribute_Value.GenericType = 'collectible' inner join Attribute on Attribute.AttributeID = Attribute_Value.AttributeID set Title.Title = replace(Title.Title, concat('{', Attribute.Name, '}'), Attribute_Value.Value)

Таким образом, в принципе, он будет правильно заменять {Date}, но затем, когда он идет на замену {User}, {Date} не является замененным значением, но все же {Date} и то же самое с {Category}.Но когда все закончится,

Есть идеи, как я могу обновить столбец Заголовок со значениями, сохраняя ранее замененные значения?

Приветствия

Гав

Ответы [ 2 ]

1 голос
/ 11 октября 2010

Вы можете написать хранимую процедуру , которая использует курсор для обновления атрибутов в Title по одному за раз.

0 голосов
/ 11 октября 2010

Если список атрибутов является статическим, я бы, вероятно, пошел с подзапросами и вложенным SQL REPLACE ().В противном случае напишите свою собственную функцию SQL, чтобы перебрать все возможные имена атрибутов и сделать замены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...