2012-07-04 72 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

相關問題