SQL – 当多个列具有相同键时进行连接

huangapple go评论113阅读模式
英文:

SQL - Make join when multiple columns have the same key

问题

我有一个类似的SQL表格:

索赔 m1 m2 m3
1 0 20 100
2 0 25 105
...
1000 5 30 95

还有一个键表格:

M_Id M_Description
0 描述0
1 描述1
2 描述2
...
200 描述200

M_Id是m1、m2和m3的关键。

我应该如何进行连接,得到一个表格如下:

索赔 m1 m2 m3
1 描述0 描述20 描述100
2 描述0 描述25 描述105
...
1000 描述5 描述30 描述95

英文:

I have a SQL table like:

claim  m1   m2   m3
1      0    20   100
2      0    25   105
...
1000   5    30   95

and a key table like:

M_Id M_Description
0   des0  
1   des1
2   des2
...
200 des200

M_Id is the key for m1, m2 and m3.

How can I make the join to get a table like:

claim   m1     m2      m3
1      des0    des20   des100
2      des0    des25   des105
...
1000   des5    des30   des95

答案1

得分: 1

你需要三个连接

选择 t.claimd1.M_Description m1d2.M_Description m2d3.M_Description m3
从我的表 t
加入我的描述 d1 在(t.m1=d1.m_id
加入我的描述 d2 在(t.m2=d2.m_id
加入我的描述 d3 在(t.m3=d3.m_id

每个id列将被单独连接,在结果集中,您可以使用相应连接表的描述,并使用别名。

英文:

You need three joins

select t.claim, d1.M_Description  m1, d2.M_Description   m2, d3.M_Description  m3
from my_table t
join my_description d1 on (t.m1=d1.m_id)
join my_description d2 on (t.m2=d2.m_id)
join my_description d3 on (t.m3=d3.m_id)

Every id column will be joined individually, and in result set you could use descriptions of corresponding join table with alias.

答案2

得分: 1

...或者您可以加入一次并使用聚合:

select p.claim,
    max(case when k.m_id = t.m1 then k.m_description end) m_description1,
    max(case when k.m_id = t.m2 then k.m_description end) m_description2,
    max(case when k.m_id = t.m3 then k.m_description end) m_description3
from mytable t
inner join keytable k on k.m_id in (t.m1, t.m2, t.m3)
group by p.claim
英文:

... Or you can join once and the use aggregation:

select p.claim,
    max(case when k.m_id = t.m1 then k.m_description end) m_description1,
    max(case when k.m_id = t.m2 then k.m_description end) m_description2,
    max(case when k.m_id = t.m3 then k.m_description end) m_description3
from mytable t
inner join keytable k on k.m_id in (t.m1, t.m2, t.m3)
group by p.claim

huangapple
  • 本文由 发表于 2023年4月6日 21:33:28
  • 转载请务必保留本文链接:https://go.coder-hub.com/75950157.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定