扩展查询以使用自定义值覆盖

时间:2015-02-06 21:51:42

标签: mysql

我有一个包含文本标签翻译版本的表格。

  

语言:id | term_Key | lang_EN | lang_FR | lang_PT

如果翻译版本以特定语言提供,则使用它,但如果不是,则使用英语术语。

SELECT term_Key,
COALESCE(lang_".$lng.", lang_EN) AS def
FROM languages

我正在根据项目ID添加另一个包含自定义覆盖的表 custom_languages

  

custom_languages:id | project_id | term_Key | lang_custom

现在我需要将它添加到我之前的查询中。如果找到特定项目的自定义术语 - 使用它,如果没有,请执行先前的查询。

SELECT languages.term_Key,
COALESCE(
    custom_languages.custom_languages, 
    languages.lang_".$lng.", 
    languages.lang_EN) AS def
LEFT JOIN custom_languages ON (languages.term_Key = custom_languages.term_Key)
FROM languages

如何在此处合并项目ID?

WHERE custom_languages.project_id = $proj

我想我可以运行两个单独的查询,首先检查是否有任何自定义术语,如果是,则将部分插入到查询中,使其看起来像上面的查询#2,如果没有'找到任何自定义术语,保持查询不变。它似乎不是优雅的解决方案,但它可能会起作用,但我确信必须有更好的方法。

0 个答案:

没有答案