列和行之间的SQL连接

时间:2016-04-13 19:31:01

标签: sql

我有两张表格,格式如下:

表名:"奖项"

id  |    Name   |   Exp_1   |   Exp_2   |   Exp_3
1   |    Joe    |   1       |   2       |   3
2   |    Bob    |   1       |           |   3
3   |    James  |           |   2       |   

表名:" Exp"

id  |    Exp          
1   |    Service       
2   |    Integrity      
3   |    Timeliness   

我需要创建的结果表:

id  |    Name   |   Exp_1_val   |   Exp_2_val     |   Exp_3_val
1   |    Joe    |   Service     |   Integrity     |   Timeliness
2   |    Bob    |   Service     |                 |   Timeliness
3   |    James  |               |   Integrity     |         

所以基本上如果其中一个" Exp _"我的奖励表中的列不为空,我需要它来自Exp表的相应值。但我无法将这些与ID号匹配,只与它们的值相匹配。是否有一种类型的连接可以做到这一点?

3 个答案:

答案 0 :(得分:1)

您似乎需要多个左连接:

select a.id, a.name, e1.exp as exp1, e2.exp as exp2, e3.exp as exp3
from awards a left join
     exp e1
     on a.exp_1 = e1.id left join
     exp e2
     on a.exp_2 = e2.id left join
     exp e3
     on a.exp_3 = e3.id ;

答案 1 :(得分:0)

试试这个

SELECT a.id, a.Name, exp1.Exp, exp2.Exp, exp3.Exp FROM Awards a
LEFT JOIN Exp exp1 on exp1.id = a.Exp_1
LEFT JOIN Exp exp2 on exp2.id = a.Exp_2
LEFT JOIN Exp exp3 on exp3.id = a.Exp_3

您需要将奖励表中的每个Exp字段加入Exp表, 如果没有值将它们链接起来,请使用LEFT JOIN。

答案 2 :(得分:-1)

您可以使用左连接以将两个表放在一起。请参阅下表以帮助您了解它。来自Wiki https://en.wikipedia.org/wiki/Join_(SQL)

enter image description here