0

次のシナリオを想像してください: テーブルに格納されたラベルのリストと、別のテーブルに格納された言語のリストがあります。ユーザーの現在の言語 (例: アラビア語) があり、次の条件でテーブルからすべてのラベルを照会したいと考えています: アラビア語で存在する場合は、アラビア語バージョンを取得します。ラベルがアラビア語で存在しない場合は、英語にフォールバックして英語版を入手してください。

問題は、アラビア語と英語の両方に存在する可能性があり、両方の行を選択したくない (そのため、単に使用してWHERE label_language='arabic' OR label_language='english'も機能しない) ことです。可能であれば、これを単一のクエリで実行したいと考えています。

ラベル テーブル:

id (non unique)|label_name|label_language
1|Something|arabic
1|Something Else|english
3|Blabla|english
4|Some text|english
4|Some other text|arabic
4

1 に答える 1

2
SELECT l1.id, COALESCE(l2.label_name, l1.label_name) AS label_name
    FROM Labels l1
        LEFT JOIN Labels l2
            ON l1.id = l2.id
                AND l2.label_language = 'arabic'
                AND l2.label_name <> ''
    WHERE l1.label_language = 'english'
于 2012-09-19T15:54:48.777 に答える