2011-11-15 4 views
1

MySQL 데이터베이스의 모든 현지화 된 컨텐츠를 저장하는 지역화 된 테이블이 있습니다. 여러 열이있는 특정 테이블에 대해 해당 열의 모든 현지화 된 콘텐츠를 검색 할 쿼리를 작성하려고합니다. EASI 나는 내가 할 수있는 알고하나의 테이블을 다른 테이블의 여러 행에 결합하십시오.

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

:

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 

나는 이런 식으로 뭔가를 원하는

foo는

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 

현지화 : 아마 쉬운 예제를 통해 이해하기 위와 같은 두 가지 쿼리를 사용하면 다음과 같은 결과를 얻을 수 있습니다 :

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에서이 쿼리를 쓰고 있어요 –

관련 문제