【发布时间】:2013-12-06 17:40:55
【问题描述】:
我有一个语言表,想要检索所选语言的特定记录。但是,当没有翻译时,我想获得另一种语言的翻译。
翻译
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"
程序数据
ID | COL1 | COL2
1 | "data" | "data"
2 | "data" | "data"
3 | "data" | "data"
如果我想根据表 PROGDATA 中的 ID 翻译语言 3,那么我可以这样做:
SELECT TEXT FROM TRANSLATIONS, PROGDATA
WHERE TRANSLATIONS.TAG="prog" & PROGDATA.ID
AND TRANSLATIONS.LANG=3
这会给我:
“Programista”
“Kategoria”
“Dzialanie”
如果是语言 1,我在第二条记录上得到一个空字符串:
"Programmeur"
""
"演员”
如何将空字符串替换为例如语言 2 的翻译?
“Programmeur”
“Category”
“行动”
我尝试在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
【问题讨论】:
-
如果首选语言不可用,如何选择使用哪种语言?
-
始终填充默认语言,例如这可能是语言 2。无论如何,它是硬编码的。
-
如果未填充默认语言,则这是开发人员错误;)在这种情况下,我应该生成错误(但是,我将在 SQL 之外执行此操作)。
标签: sql ms-access-2003