Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为数据生成嵌套JSON_Sql_Json_Sql Server_Tsql_Sql Server 2017 - Fatal编程技术网

Sql 为数据生成嵌套JSON

Sql 为数据生成嵌套JSON,sql,json,sql-server,tsql,sql-server-2017,Sql,Json,Sql Server,Tsql,Sql Server 2017,我有下表和样本数据: CatID int Catname nvarchar(255) product_ID int product_name nvarchar(255) catid Catname product_ID product_name ----- ------------ ---------- ------------ 100 mycatname100 1 productname1 100 mycatname100 2

我有下表和样本数据:

CatID        int
Catname      nvarchar(255)
product_ID   int
product_name nvarchar(255)

catid Catname      product_ID product_name
----- ------------ ---------- ------------
100   mycatname100 1          productname1
100   mycatname100 2          productname2
100   mycatname100 3          productname3
200   mycatname200 1          productname1
200   mycatname200 2          productname2
200   mycatname200 3          productname3
300   mycatname300 1          productname1
300   mycatname300 2          productname2
300   mycatname300 3          productname3
如何获得如下所示的JSON格式:

[
  {"catid":"100","catname":"mycatname100","products":[{"product_id":"1","product_name":"productName1"},{"product_id":"2","product_name":"productName2"},{"product_id":"3","product_name":"productName3"}]},
  {"catid":"200","catname":"mycatname200","products":[{"product_id":"1","product_name":"productName1"},{"product_id":"2","product_name":"productName2"},{"product_id":"3","product_name":"productName3"}]},
  {"catid":"300","catname":"mycatname300","products":[{"product_id":"1","product_name":"productName1"},{"product_id":"2","product_name":"productName2"},{"product_id":"3","product_name":"productName3"}]}
]

数据库设计可能需要一些规范化。话虽如此,您可以使用嵌套查询创建嵌套JSON:

SELECT catid, catname, products = (
    SELECT product_id, product_name
    FROM t AS x
    WHERE x.catid = t.catid
    FOR JSON PATH
)
FROM t
GROUP BY catid, catname
FOR JSON AUTO

数据库设计可能需要一些规范化。话虽如此,您可以使用嵌套查询创建嵌套JSON:

SELECT catid, catname, products = (
    SELECT product_id, product_name
    FROM t AS x
    WHERE x.catid = t.catid
    FOR JSON PATH
)
FROM t
GROUP BY catid, catname
FOR JSON AUTO

比你多!!!!!比你好多了!!!!!