У меня есть таблица с текстом на разных языках. Это определено так:
Id|Language|Text
EXAMPLE DATA
0, ENU, a
0, DAN, b
1, ENU, c
2, ENU, d
2, DAN, e
3, ESP, f
3, ENU, g
Язык и Id образуют ключ.
Теперь я хочу извлечь все тексты на одном языке (скажем, на английском) и получить соответствующий текст на другом языке (например, на датском), показанный в столбце рядом с. Таким образом, результат должен быть:
0, a, b
1, c,
2, d, e
3, g
Я знаю, что могу сделать соединение следующим образом:
SELECT t1.Id, t1.Text AS "ENU", t2.Text AS "DAN" table as t1
JOIN table as t2 ON (t1.Id= t2.Id)
WHERE t1.Langauge = "ENU" AND t2.Language = "DAN";
Но это не включает пропущенные строки (т.е. id строки = 1 и id = 3). Как это сделать?
* ОБНОВЛЕНИЕ ****
Я получаю предложение использовать LEFT JOIN, но не могу заставить его работать. Может быть, потому что мое расположение на столе немного отличается от упрощенного вопроса выше. Моя таблица определена так:
Язык | MPageId | MFieldId | MParagraph | многострочный текст
Где язык, MPageId, MFieldId, MParagraph образуют ключ
Я пробовал это:
SELECT t1.MPageId, t1.MFieldId, t1.MParagraphId, t1.MText, t2.MText
ОТ основного как ЛЕВЫЙ ПРИСОЕДИНЯЙТЕСЬ Основной как t2 ВКЛ (t1.MPageId = t2.MPageId И
t1.MFieldId = t2.MFieldId AND t1.MParagraphId = t2.MParagraphId) ГДЕ
t1.MLanguage = 'ENU' И t2.MLanguage = 'DAN'