mysql与条件连接

swe*_*web 10 mysql sql join conditional-statements

我有两个这种结构的表

categories
--------------------------------
id  | create
1   | 2012-12-01 12:00:00
2   | 2012-12-01 12:00:00

category_i18ns
--------------------------------
category_id     | lang  | title
1               | en    | home page
1               | de    | HomE PAGEa
1               | fa    | ????
2               | en    | about
Run Code Online (Sandbox Code Playgroud)

某些类别包含所有语言数据,另一些类别包含所有语言数据 例如,类别ID 2只有en翻译标题.我希望有一个查询,首先检查当前语言的检索标题,然后如果不存在,然后显示另一个.

我有一个查询来获取当前类别数据与i18n数据在当前示例中de是默认语言.对于类别ID,1我们有de标题,但对于类别,2我们不.所以我想要英文版作为类别的标题

SELECT * FROM `mhf_swe_ndzhmju3_test`.`categories` AS `Category`
LEFT JOIN `mhf_swe_ndzhmju3_test`.`category_i18ns` AS `CategoryLocale` ON (
`CategoryLocale`.`category_id` = `Category`.`id`
AND `CategoryLocale`.`lang` = 'de')
Run Code Online (Sandbox Code Playgroud)

渴望用'de'语言

Category.id     CategoryLocale.title    CategoryLocale.lang
1               HomE PAGEa              de
2               about                   en
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 17

SELECT Category.id,
        COALESCE(a.lang, b.lang) lang,
        COALESCE(a.title, b.title) title
FROM   categories AS Category
      LEFT JOIN category_i18ns AS a
           ON a.category_id = Category.id AND a.lang = 'de'
      LEFT JOIN category_i18ns AS b
           ON b.category_id = Category.id AND b.lang = 'en'
Run Code Online (Sandbox Code Playgroud)