如何选择列表列表或对象的对象不像表格? (SQL 服务器)
Posted
技术标签:
【中文标题】如何选择列表列表或对象的对象不像表格? (SQL 服务器)【英文标题】:How can I Select list of list or object of object not like a table? (SQL Server) 【发布时间】:2021-12-10 14:59:52 【问题描述】:我在 SQL Server 中遇到问题:我想要选择列表列表或对象的对象而不是表。
例子:
SELECT p.Name, List (J.Name), ....
FROM dbo.Person AS p
INNER JOIN dbo.Jobs AS j ON j.PersonId = p.id
GROUP BY p.name
像一个 json 例子:
Name : "test"
Jobs : [
Name : "Job",
Position : 2
,
Name : "Job1",
Position : 1
]
我有解决这个问题的方法吗?
我想输出一个可用于 Web 服务的存储过程
【问题讨论】:
hmm.... 你将不得不在你的问题上付出更多的努力。点网中有完整的模式和框架可以完成大部分工作。 MVC、LINQ、实体框架、序列化只是开始的几个地方。 【参考方案1】:鉴于此示例数据:
CREATE TABLE dbo.Person(Id int, Name nvarchar(32));
INSERT dbo.Person VALUES(1, N'test');
CREATE TABLE dbo.Jobs(Id int, Name nvarchar(32), PersonId int, Position int);
INSERT dbo.Jobs VALUES(1, N'Job', 1, 2),(1, N'Job1',1,1);
您只需将FOR JSON AUTO
应用于您的加入即可获得您想要的结果(好吧,关闭):
SELECT p.Name, jobs.Name, jobs.Position
FROM dbo.Person AS p
INNER JOIN dbo.Jobs AS jobs
ON jobs.PersonId = p.id
FOR JSON AUTO, WITHOUT_ARRAY_WRAPPER;
输出(我的空白):
"Name":"test",
"jobs":[
"Name":"Job",
"Position":2
,
"Name":"Job1",
"Position":1
]
示例db<>fiddle
【讨论】:
以上是关于如何选择列表列表或对象的对象不像表格? (SQL 服务器)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 HTML 列表框和 SQL 代码显示表格中的某些列?