MySQL:返回空字段而不是没有行

时间:2012-04-04 23:53:17

标签: mysql

我有两个表,一个用于英语类别名称,另一个用于西班牙语类别名称。

我正在尝试编写一个小型界面,允许管理员查看必须提供翻译的英语类别。

我会假设当你创建一个西班牙语类别时,它会继承英语类别的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

这会返回一个很好的条目列表:

enter image description here

这很符合我的目的,但有一个缺陷。如果西班牙语表中没有行,则根本不会返回派生行。

如何更改我的查询,以便如果英语表中有一行而不是西班牙语中的一行,我可以返回派生行,说“找不到翻译”。

类似于:

ID = 8, en = "Security", es = "Translation Not Found"

任何指导都会非常感激。

谢谢老兄!

2 个答案:

答案 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)

为什么不将所有西班牙语行的默认值设置为“未找到翻译”?

只是一个建议......