2011-11-15 87 views
1

我有一個本地化的表,其中存儲了我的MySQL數據庫的所有本地化內容。我正在嘗試編寫一個查詢來檢索具有多列的給定表格,這些列的所有本地化內容。可能更容易用一個例子明白:在另一個表中針對多行添加一個表

code title localized_title_code description localized_description_code 
A001 Bar1  foo_A001_title   Baz1   foo_A001_description 
A002 Bar2  foo_A002_title   Baz2   foo_A002_description 

本地化

id code     value locale 
1  foo_A001_title  Bar1o es 
2  foo_A002_title  Bar2o es 
3  foo_A001_description Baz1o es 
4  foo_A002_description Baz2o es 

我想是這樣的:

code title localized_title description localized_description 
A001 Bar1 Bar1o   Baz1  Baz1o 
A002 Bar2 Bar2o   Baz2  Baz2o 

我知道我可以EASI用這樣的兩個查詢得到這樣的東西:

select foo.title,//Or description 
    localization.value as localized_title 
from foo 
join localization 
where localization.code = concat('foo', foo.code, 'title') 
and localization.locale = 'es'; 

但是有沒有辦法將兩個本地化列成一個結果?假設不會有缺失條目是安全的(即如果有標題,則有說明)。

回答

3

這可能會爲你工作:

select foo.code, 
    foo.title, 
    title.value as localized_title, 
    foo.description, 
    description.value as localized_description 
from foo 
join localization as title on title.code = concat('foo', foo.code, 'title') 
    and title.locale = 'es' 
join localization as description on description.code = concat('foo', foo.code, 'description') 
    and description.locale = 'es' 
+0

對不起,我寫在SQL2005這個查詢 –

相關問題