1

結合する必要がある 2 つのテーブルがあります。彼らはこのように見えます

ここに画像の説明を入力

ここに画像の説明を入力

それらを結合する必要があるので、両方のテーブルからすべてのデータを取得し、次のような情報を表示します。ドイツ語の翻訳がある場合は、ドイツ語のみを表示します。ドイツ語がない場合は、英語を表示します (すべてのオブジェクトで使用可能)。

4

3 に答える 3

3
select  eng.entryid
,       coalesce(ger.name, eng.name)
from    YourTable eng
left join
        YourTable ger
on      ger.entryid = eng.entryid
        and ger.lang = 'ger'
where   eng.lang = 'eng'
于 2013-03-12T19:29:50.817 に答える
1
SELECT f1.id,f1.lang,f1.name
FROM foo AS f1
LEFT JOIN foo AS f2
ON f1.id=f2.id AND f1.lang<>f2.lang AND f2.lang='ger'
WHERE f2.id IS NULL

http://sqlfiddle.com/#!2/a0a75/9

英語とドイツ語以外の言語がある場合は、最後の行を次のように変更する必要があります。

WHERE f2.id IS NULL AND (f1.lang='ger' OR f1.lang='eng')
于 2013-03-12T19:35:14.473 に答える
1

試す:

select entry_id,
       case max(lang)
           when 'ger' then max(case lang when 'ger' then name end)
           else max(name)
       end as trans_name
from your_table
group by entry_id
于 2013-03-12T19:44:32.407 に答える