2012-07-04 118 views
0

我有一张3列的表格:label_value, language_value, language。它是标签的表格,其中标签的label_value = "name",language_value - 标签的翻译,正在使用的语言的language-id。因此,我需要为我的语言(language = 24)提取label_valuelanguage_value英文(language = 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倍。请编辑它。谢谢。

更新:

另外我需要为locale查询满足条件:t.approved = '1' 或t.user_id = 123。

回答

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) 
+0

谢谢。我忘记了一些细节。请在3分钟内查看我的更新。 – user1477886

+0

您可以为两个表添加条件,在回答 – Andomar

+0

中编辑为什么我们需要向两个表中添加条件? – user1477886

相关问题