将所有多个列连接到另一个表的同一列

时间:2017-10-21 15:52:28

标签: sqlite join lookup

假设我有两张桌子:

表“组合”

first  second  result
1      1       0
1      2       1
1      3       0
2      3       2

表“名称”

ID  Name
1   Item1
2   Item2
3   Item3

如何将这些连接到这样的输出?基本上只是为了“查找”ID?

firstItem  secondItem  resultingItem
Item1      Item1       -
Item1      Item2       Item1
Item1      Item3       -
Item2      Item3       Item2

1 个答案:

答案 0 :(得分:1)

"组合"中的trhee列table保存" Names"的ID值表,所以基本上你有三个外键给同一个表的同一个字段。

为了也列出没有结果的组合,我们需要使用左连接或右连接,以便保留不与结果列匹配的组合记录。在下面的查询的情况下,我使用左连接,因为组合表位于条件的左侧。

这可以这样完成:

select n1.Name, n2.Name, nr.Name
from
Combinations c left join Names n1 on c.first = n1.ID
left join Names n2 on c.second = n2.ID
left join Names nr on c.result = nr.ID;