在存储过程中,如何使用一个查询的结果在另一个查询中使用

时间:2012-02-02 20:35:58

标签: sql-server-2008

我正在编写一个存储过程,它将带回很多项目信息。由于现有数据库的结构,已经确定这是我们需要采取的方法。

我的基本查询将是

Select * from Projects where ProjectID = @projectID

这将返回类似

的内容

ProjectID || Name || Component1Type || Component2Type

获得这些结果后,我想查询Component1和component2表,并返回这些组件的名称,其中包含

的内容。

Select Component1.Name from Component1 where ComponentID = Component1Type (这是前一个查询的结果)

只会返回名称

在为3或4个项目执行此操作之后,我想将它们追加回原始查询,以便我返回一行

ProjectID || Name || Component1Type || Component2Type || Name1 || Name2 || etc...

有关如何做到这一点的任何想法?我想使用临时表还是有更简单的方法来实现这个目标?

1 个答案:

答案 0 :(得分:3)

Select P.*, C1.Name as Name1, C2.Name as Name2 
from Projects P
left join Component1 C1 
  on P.Component1Type = C1.ComponentID
left join Component2 C2 
  on P.Component2Type = C2.ComponentID
where P.ProjectID = @projectID