如何从数据库中获取唯一和空条目?

时间:2012-07-04 06:01:15

标签: sql

我有一个包含3列的表:label_value, language_value, language。它是标签的表格,标签的label_value = "name",language_value - 标签的翻译,语言 - 正在使用的语言的id。因此,我需要为我的语言(语言= 24)提取label_valuelanguage_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。

1 个答案:

答案 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)