将一个表连接到另一个表中的多个行

时间:2011-11-15 19:12:25

标签: mysql select join

我有一个本地化的表格,我存储了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';

但有没有办法将两个本地化的列合并为一个结果?可以安全地假设没有遗漏的条目(即,如果有标题,则有描述)。

1 个答案:

答案 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'
相关问题