我很小的麻烦,因为很久以前我研究数据库和查询。
例如,我将为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
等等......
答案 0 :(得分: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';
答案 1 :(得分: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'