2016-07-05 16 views
0

我正在编写存储过程来获取基于给定id的数据,这一切都很好,但一些列是外键,我需要的是它们的值。我如何在存储过程中执行所有这些操作?在T-SQL选择存储过程中处理外键?

仅供参考,我将使用ASP.NET(尚未学习)调用这些存储过程并更新网站。

例如,在AdventureWorks数据库:

CREATE PROCEDURE spLoadProduct 
AS 
BEGIN 
    SET NOCOUNT ON; 

    SELECT 
     [ProductID], [Name], 
     [ProductCategoryID], [ProductModelID] 
    FROM 
     [SalesLT].[Product] 
END 

Screenshot of current SP result

我要的是最后两列返回实际的类别和型号名称,而不是外键。标准做法是在一个存储过程中完成这一切,正如我正在尝试的那样?

+2

谷歌'的SQL Server Joins'。 –

回答

0

也许我错误地解释了你的问题,但你可以在存储过程中包含连接。

例如,如果你有其中afkey环节出表2

 
Table_1:      Table_2: 
id name afkey    akey otherinfo 
1 fred 1     1  info 
2 jon 2     2  other 
3 abbie 3     3  more info 

如果你想显示的活动促销柱代替afkey外键

你可以有:

create PROCEDURE spLoad 
AS 
    BEGIN 
     SET NOCOUNT ON; 
     SELECT NAME, OTHERINFO 
     FROM TABLE_1 
     INNER JOIN TABLE_2 
     ON TABLE_1.afkey = TABLE_2.akey 
    END 
0

您可以使用INNER JOIN将父表连接到子表。在这种情况下,子表是ProductCategory和ProductModel。

CREATE PROCEDURE spLoadProduct 
AS 
BEGIN 

    SELECT 
     p.ProductID 
     , p.Name 
     , p.ProductCategoryID 
     , p.ProductModelID 
     , ProductCategoryName = pc.Name 
     , ProductModelName = pm.Name 
    FROM 
     SalesLT.Product p 
     INNER JOIN SalesLT.ProductCategory pc ON p.ProductCategoryID = pc.ProductCategoryID 
     INNER JOIN SalesLT.ProductModel pm ON p.ProductModelID = pm.ProductModelID; 

END 

内连接教程:http://www.w3schools.com/sql/sql_join_inner.asp