将同一行的ID链接到其他表

时间:2012-11-08 12:03:58

标签: sql sql-server

我有一个映射表,可以保存同一个表中的ID。

例如我有:

变量(表) 价值观(表) Variables_Values(映射表)

映射表包含以下字段:

VariableID
To_VariableID
To_ValueID

因此,一行可能有两个变量ID,或者一个变量ID和一个值ID。 它始终是一对,因此不能同时存在两个变量ID和一个值ID。

现在,在Variables和Values表中,有一个Name字段,因此变量和值也有名称。

我想创建一个查询,根据映射表中的ID显示名称,但我不确定如何。

现在我有一个返回如下结果的查询:

VariableName To_VariableID To_ValueID

我想显示VariableName_2,ValueName而不是To_VariableID To_ValueID。

这有什么技巧吗? 它可能是以下查询的组合吗?

SELECT map.ID, map.TransitionID, variable.Name
FROM Variables AS variable INNER JOIN Mapping AS map 
ON variable.VariableID = map.VariableID

SELECT variable.VariableID, variable.Name
FROM Variable AS variable
WHERE variable.VariableID IN ( SELECT map.To_VariableID FROM Mapping AS map)

SELECT value.Name
FROM Values AS value
WHERE value.ValueID IN ( SELECT map.To_ValueID FROM Mapping AS map)

谢谢。

1 个答案:

答案 0 :(得分:1)

就这么简单:

SELECT map.Transition_Set_Variable_ID, 
       map.Transition_ID,
       variable.Name,
       variable2.Name,
       value.Name
FROM Variables AS variable 
  INNER JOIN Mapping AS map ON variable.VariableID = map.VariableID
  LEFT JOIN Variables AS variable2 ON map.To_VariableID = variable2.VariableID
  LEFT JOIN Values AS value ON tsv.To_ValueID = value.ValueID
ORDER BY map.TransitionID, variable.VariableID