我有两个表,一个用于英语类别名称,另一个用于西班牙语类别名称。
我正在尝试编写一个小型界面,允许管理员查看必须提供翻译的英语类别。
我会假设当你创建一个西班牙语类别时,它会继承英语类别的ID。
要获得相应类别的结果集,我有以下查询:
SELECT tbl_cms_categories_en.id as id,
tbl_cms_categories_en.name as en,
tbl_cms_categories_es.name as es
FROM tbl_cms_categories_en, tbl_cms_categories_es
WHERE tbl_cms_categories_en.id = tbl_cms_categories_es.id
这会返回一个很好的条目列表:
这很符合我的目的,但有一个缺陷。如果西班牙语表中没有行,则根本不会返回派生行。
如何更改我的查询,以便如果英语表中有一行而不是西班牙语中的一行,我可以返回派生行,说“找不到翻译”。
类似于:
ID = 8, en = "Security", es = "Translation Not Found"
任何指导都会非常感激。
谢谢老兄!
答案 0 :(得分:4)
试
SELECT tbl_cms_categories_en.id as id,
en.name as en_name,
IF(es.name IS NULL, "No Translation Found", es.name) as es_name
FROM tbl_cms_categories_en AS en
LEFT JOIN tbl_cms_categories_es AS es
ON tbl_cms_categories_en.id = tbl_cms_categories_es.id
答案 1 :(得分:0)
为什么不将所有西班牙语行的默认值设置为“未找到翻译”?
只是一个建议......