如何通过sql存储过程获得这样的响应

问题描述 投票:-1回答:1

我想使用存储过程从数据库获取Web API的响应

表1

CustomerID | Offer
CustomerID ==> PK as well as FK for selfrefrencing

表2

ProductID| CustomerID ===>Child Table 

我想通过storeprocedure在json中做出这样的响应

{
  CustomerID:abc
  Offer:1000
  Bid:500 Logical column
  [
    {
      ProductID:123
      CustomerID:22
    }
  ]
sql-server join
1个回答
0
投票

这是一个示例,可能会让您入门。您可以在SSMS中运行它。

DECLARE @Main TABLE ( MainId VARCHAR(3), Offer INT, Bid INT );
INSERT INTO @Main ( MainId, Offer, Bid ) VALUES ( 'abc', 1000, 500 );

DECLARE @Sub TABLE ( fkMainId VARCHAR(3), ProductID INT, CustomerID INT );
INSERT INTO @Sub ( fkMainId, ProductID, CustomerID ) VALUES ( 'abc', 123, 22 );

SELECT
    MainId, Offer, Bid, Sub.Items
FROM @Main AS Main
OUTER APPLY (

    SELECT (
        SELECT ProductID, CustomerID FROM @Sub WHERE fkMainId = Main.MainId FOR JSON PATH
    ) AS Items

) AS Sub
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER;

返回:

{"MainId":"abc","Offer":1000,"Bid":500,"Items":[{"ProductID":123,"CustomerID":22}]}

美化:

{
    "MainId": "abc",
    "Offer": 1000,
    "Bid": 500,
    "Items": [{
        "ProductID": 123,
        "CustomerID": 22
    }]
}
© www.soinside.com 2019 - 2024. All rights reserved.