我已经建立了一个多语言应用程序。该数据库如下所示:
餐桌用品
|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/