У меня есть языковая таблица и вы хотите получить определенные записи для выбранного языка. Однако, когда нет перевода, я хочу получить перевод другого языка.Заменить пустую/пустую строку с результатом из другой записи
ПЕРЕВОДЫ
TAG LANG TEXT
"prog1" | 1 | "Programmeur"
"prog1" | 2 | "Programmer"
"prog1" | 3 | "Programista"
"prog2" | 1 | ""
"prog2" | 2 | "Category"
"prog2" | 3 | "Kategoria"
"prog3" | 1 | "Actie"
"prog3" | 2 | "Action"
"prog3" | 3 | "Dzialanie"
PROGDATA
ID | COL1 | COL2
1 | "data" | "data"
2 | "data" | "data"
3 | "data" | "data"
Если я хочу переводы с языка 3 на основе идентификаторов в таблице PROGDATA, то я могу сделать:
SELECT TEXT FROM TRANSLATIONS, PROGDATA
WHERE TRANSLATIONS.TAG="prog" & PROGDATA.ID
AND TRANSLATIONS.LANG=3
который дал бы мне:
"Programista"
"Kategoria"
"Dzialanie"
В случае языка 1 я получаю пустую строку на второй записи:
«Programmeur "
""
"Actie"
Как заменить пустую строку, например, на перевод языка 2?
"Programmeur"
"Категория"
"Actie"
Я попытался гнездования новый запрос на выборку в качестве IIf()
функции, но это явно не работает.
SELECT
IIf(TEXT="",
(SELECT TEXT FROM TRANSLATIONS, PROGDATA
WHERE TRANSLATIONS.TAG="prog" & PROGDATA.ID
AND TRANSLATIONS.LANG=2),TEXT)
FROM TRANSLATIONS, PROGDATA
WHERE TRANSLATIONS.TAG="prog" & PROGDATA.ID
AND TRANSLATIONS.LANG=3
Если предпочтительный язык недоступен, как вы выбираете, какой язык для нас e вместо? – Smandoli
Язык по умолчанию всегда заполняется, например. это может быть язык 2. Во всяком случае, он жестко закодирован. –
Если язык по умолчанию не заполнен, это ошибка разработчика;) В этом случае я должен сгенерировать ошибку (но я сделаю это за пределами SQL). –