我遇到小麻烦了,因为很久以前我研究数据库和查询。

例如,我将有两个用于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';

10-08 08:00
查看更多