我有一个本地化的表格,我存储了MySQL数据库的所有本地化内容。我正在尝试编写一个查询,该查询将针对具有多列的给定表检索这些列的所有本地化内容。通过一个例子可能更容易理解:
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
定位
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
我知道我可以轻松地通过以下两个问题来解决这个问题:
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';
但有没有办法将两个本地化的列合并为一个结果?可以安全地假设没有遗漏的条目(即,如果有标题,则有描述)。
答案 0 :(得分: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'