0

我有一个小麻烦,因为很久以前我研究数据库和查询。

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

等等...

4

2 回答 2

4

这应该可以解决问题(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';
于 2012-11-09T17:07:04.943 回答
0
select cds.id, IFNULL(languages.name, cds.name) as name
from cds 
left join languages on cds.id = languages.cd_id and languages.language = 'de'
于 2012-11-09T17:10:42.893 回答