我已经建立了一个多语言应用程序。该数据库如下所示:

餐桌用品

|id| img |url|
--------------
|1 |     |   |
|2 |     |   |
|3 |     |   |


表事物_翻译

|id|  thing_id | title | locale |
---------------------------------
|1 |     1     |       |    en  |
|2 |     2     |       |    en  |
|3 |     3     |       |    en  |
|4 |     2     |       |    ru  |


我的默认语言为英语(locale = en)。

当我用英语以外的其他语言从title获得翻译things_translations且数据库中尚不存在该语言时,我想获得它的英文版本。

我试过下面的查询,但返回所有记录:

select things.id
FROM things
INNER JOIN things_translations ON things.id = things_translations.thing_id
WHERE CASE WHEN things_translations.locale = ru IS NULL
THEN things_translations.locale = en END


通过上面的查询,我得到了thing_id:2的两种语言,但是我只想得到ru locale而不是en,因为它存在。

最佳答案

SELECT IFNULL(TT1.title,TT.title)
FROM things T
LEFT JOIN things_translations TT
    ON (T.id = TT.thing_id AND TT.locale = 'en')
LEFT JOIN things_translations TT1
    ON (T.id = TT1.thing_id AND TT1.locale = 'ru')
WHERE T.id = 2;



  SQL Demo

关于mysql - 如果一个记录不存在,请选择另一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39097144/

10-12 00:32
查看更多