J'ai une requête intéressante que je me demande si quelqu'un peut aider?mysql mise à jour complexe et remplacer
Fondamentalement, j'ai trois tables, Titre, attributs et attribute_value
Titre contient une liste de modèles tels que "Créé le {date} par {utilisateur} dans {Catégorie} puis dans la table d'attributs, je les lignes qui contiennent une définition des paramètres enveloppés dans des accolades. Puis, dans la table attribut_value, j'ai les valeurs. Le problème que j'ai est que la requête ne semble pas stocker le remplacer sur chaque ligne jusqu'à ce que la requête soit terminée, ce qui signifie que la ligne ne reçoit que la dernière mise à jour, incomplète.
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)
Donc, fondamentalement, il remplacera {date} correctement, mais quand il va remplacer {User}, {Date} n'est pas la valeur remplacée mais {date} et {même avec Catégorie}. Mais quand c'est fini, le
Une idée sur la façon dont je peux mettre à jour la colonne Titre avec les valeurs, tout en conservant les valeurs précédemment remplacées?
Vive
Gav
Vous devez joindre une valeur d'attribut une fois pour chaque valeur du modèle, dans ce cas 3 fois. Chaque jointure couvrira une valeur. – Martin
@Martin, l'attribut nom/valeur et le titre sont tous complètement génériques. Ce serait pratiquement impossible à gérer. – Gavin
D'accord. Je pense que la solution la plus simple est de faire le remplacement dans votre application: récupérer le modèle, extraire la liste des attributs, puis récupérer les attributs, enfin effectuer les substitutions. – Martin