アクティビティなどのテキストを含むテーブル activity_types があり
New project has been assigned to {user} with name {project}
New discussion has been posted by {client} on {project}
Project {project} has been closed by {user}
A draft has been approved by {client} on {project}
ます
これらのテキストの ID が入力された別のテーブルがあります。
私の要件は、{} 内のテキストを実際の値に置き換えてこれらを取得することです。たとえば、{client} はクライアント名に置き換え、{project} はプロジェクト名に置き換えます。
ネストされた replace mysql 関数を使用しようとしましたが、null 文字列が返されます。これが私のクエリです
SELECT REPLACE(REPLACE(REPLACE(att.type_text, '{project}', p.project_business_name), '{user}', u.user_fullname), '{client}', c.client_name) AS activity, a.*
FROM activities a
LEFT JOIN activity_types AS att ON att.type_id = a.activity_type
LEFT JOIN users u ON u.user_id = a.activity_user AND a.activity_user IS NOT NULL
LEFT JOIN projects p ON p.project_id = a.activity_project AND p.project_is_removed = '0'
LEFT JOIN clients c ON c.client_id = a.activity_client AND a.activity_client IS NOT NULL;
問題は、c.client_name を静的テキストに置き換えると正常に動作しますが、静的文字列を c.client_name に置き換えると、{client} を持たないアクティビティで null が返されることです。どこが間違っていると思いますか?