0

昔からデータベースやクエリを勉強しているのでちょっと困っています。

たとえば、cd:s用に2つのテーブルがあります。1つはデータ用で、もう1つは代替変換用です。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

ドイツ語の翻訳は1つしかないので(CD#1)、元の名前のCD2と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 に答える