我遇到小麻烦了,因为很久以前我研究数据库和查询。
例如,我将有两个用于cd:s的表,一个表包含数据,另一个表包含替代翻译。
在CD表中,我使用的是原始语言,看起来像这样
Table for CDs (cds):
id | name | language
-----------------------
1 | aaa | en
2 | bbb | en
3 | ccc | fi
Table for languages (languages):
cd_id | language | name
-----------------------
1 | fi | AAA
1 | de | AAACHTUNG
3 | en | CCC
现在,我想用德语获得所有这些cd:s,如果没有翻译,我希望它使用原始语言...
编辑:
德文= de
因为只有一种德语翻译(在CD#1上),所以我想用其原名的CD 2和3。在这种情况下,英语和芬兰语...
我怎样才能做到这一点?
编辑2:
在这种情况下,当我要求“ de”时,我会得到:
AAACHTUNG
bbb
ccc
如果我要求“ en”,我会得到
aaa
bbb
CCC
等等...
最佳答案
这应该可以解决问题(SQL Fiddle):
select coalesce(l.name, c.name)
from cds c
left join languages l on l.cd_id = c.id
and l.language = 'de';