我目前在我的数据库中有两个表,一个用于值(使用外键),另一个用于翻译(同一个表具有多种属性类型的翻译)。
我正在尝试从Values表到Translations表执行单个内连接,并翻译两个或多个字段。
我知道这是一个糟糕的数据库设计,但此数据库仅用于生成不会更改的单个报告*
翻译表
**id, attribute, value, name**
1 , office , 2 , office1
2 , office , 3 , office2
3 , office , 4 , office3
4 , office , 5 , office4
5 , segment , 31 , segment1
6 , segment , 32 , segment2
7 , segment , 33 , segment3
8 , segment , 34 , segment4
值表
**office, segment, sum**
2 , 31 , 1234
3 , 31 , 4321
5 , 34 , 9813
2 , 33 , 8371
结果应该是这样的:
结果表
**office , segment , sum**
office1 , segment1 , 1234
office2 , segment1 , 4321
office4 , segment4 , 9813
office1 , segment3 , 8371
有可能吗?如果有,怎么样?
谢谢。
答案 0 :(得分:1)
您可以通过两次加入translation
表来执行此操作:
SELECT toff.name as office, tseg.name as segment, v.`sum`
from values v join
translation toff
on v.office = toff.value and toff.attribute = 'office' join
translation tseg
on v.segment = tseg.value and tseg.attribute = 'segment';
我认为属性名称对于匹配目的很重要。
答案 1 :(得分:0)
您希望通过Translation
表格将Values
表格加入自身:
SELECT o.name office, s.name segment, v.sum
FROM Translation o
INNER JOIN Values v ON o.value = v.office
INNER JOIN Translation s on v.segment = s.value
答案 2 :(得分:0)
这应该是:
SELECT t.name
,t.attribute
,v.sum
FROM translation t
,VALUES v
WHERE t.value = v.office