我有一个包含3列的表:label_value, language_value, language
。它是标签的表格,标签的label_value = "name"
,language_value - 标签的翻译,语言 - 正在使用的语言的id。因此,我需要为我的语言(语言= 24)提取label_value
,language_value
为英语(语言= 45)和language_value
。请注意,并非所有英文标签都有我的语言翻译,但我需要提取所有英文标签,如果标签没有翻译成我的英文,那么它必须为我的语言返回此标签为NULL language_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。
答案 0 :(得分:0)
您可以使用left 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)