繁体   English   中英

在T-SQL中选择外键选择存储过程?

[英]Handling foreign keys in T-SQL select stored procedure?

我正在编写存储过程以根据给定的ID获取数据,这很好,但是有些列是外键,我需要的是它们的值。 如何在存储过程中完成所有这些操作?

作为参考,我将使用ASP.NET(尚未了解)来调用这些存储过程并更新网站。

例如,在AdventureWorks数据库中:

CREATE PROCEDURE spLoadProduct
AS
BEGIN
    SET NOCOUNT ON;

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

当前SP结果的屏幕截图

我想要的是最后两列返回实际的类别和模型名称,而不是外键。 我正在尝试在一个存储过程中完成所有操作的标准做法吗?

也许我会误解您的问题,但是您可以在存储过程中加入联接。

如果您有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

如果要显示otherinfo列而不是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

您可以使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM