簡體   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