我正在处理一个mySQL问题。我想建立一个翻译系统,其中键(占位符)保存在tblkeys中,翻译存储在tbltransations中。
系统中的每个用户都有一个语言设置,当用户语言的翻译不可用时,我希望系统使用英语。

SELECT * FROM tblkeys, tbltranslations
WHERE
tblkeys.fiproject = 1
AND tbltranslations.fiproject = tblkeys.fiproject
AND tbltranslations.fikey = tblkeys.idkey
AND (tbltranslations.dtlanguage = 'de' OR tbltranslations.dtlanguage = 'en')
GROUP BY tblkeys.idkey

在这里,我用一个简单的或来演示我的意思。问题是,我希望系统更喜欢de,但如果不可用,请使用en作为dtlanguage。
我怎么能做到呢?
提前谢谢!

最佳答案

可以使用两个左连接。一个连接所有DE字符串,一个连接所有EN字符串,然后在您的选择中添加IFNULL(DE.text,EN.text)

selectr tblkeys.idkey, ifnull(de.translation, en.translation)
from tblkeys
left join
(select idkey, translation from tbltranslations where tbltranslations.dtlanguage = 'de') de
on de.idkey = tblkeys.idkey
left join
(select idkey, translation from tbltranslations where tbltranslations.dtlanguage = 'en') en
on en.idkey = tblkeys.idkey

09-25 21:33