0

我有一个包含 3 列的表:label_value, language_value, language. 它是标签表,标签在哪里label_value = "name",language_value - 标签的翻译,语言 - 正在使用的语言的 id。所以,我需要为英语(语言 = 45)和我的语言(语言 = 24)提取label_value, 。请注意,并非所有英文标签都翻译成我的语言,但我需要提取所有英文标签,如果标签没有翻译成我的英语,那么它必须返回这个标签,并为我的语言返回 NULL。所以,我做了以下代码:language_valuelanguage_valuelanguage_value

SELECT e.label_value, e.language_value
FROM labels e, labels t
WHERE e.label_value=t.label_value AND e.language=45 AND t.language=24  

我知道这不是完整和正确的查询,因为它没有返回不是所有的英文标签,而是返回了一些标签 2 次。请编辑它。谢谢你。

更新:

我还需要对语言环境的查询满足条件:t.approved='1' 或 t.user_id=123。

4

1 回答 1

0

您可以使用 aleft join来查找可选的本地语言行:

select  eng.label_value
,       coalesce(loc.language_value, eng.language_value)
from    labels eng
left join    
        labels loc
on      loc.language = 24
        and eng.label_value = loc.label_value
        and (loc.approved = '1' or loc.user_id = 123)
where   eng.language = 45             
        and (eng.approved = '1' or eng.user_id = 123)
于 2012-07-04T06:06:58.853 回答