SQL一行具有来自不同列的多个连接

时间:2015-06-22 17:41:43

标签: sql join left-join jointable right-join

Mapping Table 

Desciption  ToID FromID 
Map A       2    1 


BaseTable

Id, Deccription, subTypeID
1   ValueA       9
2   ValueB       10`enter code here`

SubTypeTable
id  Description
9   SubType 9
10  Subtype 10 

我想要返回的是Mapping表中的以下内容

MapDescription,ToID的SubTpeDescription,FromID的SubTpeDescription

所以基本上 MapA,Subtype9,Subtype 10作为输出

我到目前为止所做的是

Select m.Description, st.Description from Mapping m 
right join BaseTable bt where m.toID = bt.id
right join BaseTable bt where m.FromID = bt.id,
inner join SubTypeTable stt on bt.subTypeID = stt.id

1 个答案:

答案 0 :(得分:1)

第二次引用时,需要为表提供不同的别名。

Select m.Description, st.Description 
FROM BaseTable bt 
LEFT JOIN Mapping m where m.toID = bt.id
LEFT JOIN BaseTable bt2 where m.FromID = bt2.id,
inner join SubTypeTable stt on bt2.subTypeID = stt.id

我个人会从主表(基表)开始,按照你的需要努力。我试图避免右连接 - 通常当我使用它时,这是由于计划不周。