【发布时间】:2020-11-27 14:51:11
【问题描述】:
以这样一种方式生成 JSON,即子表的 JSON 应该有 ARRAY_WRAPPER,而父表的 JSON 不应该有 ARRAY_WRAPPER 并且查询应该在 ('kumar,pathan') 中列 P1NAME 的 PARENT1 表上,所以输出应该有 2 行
我有下面提到的表格
CREATE TABLE [dbo].[Z_PARENT1](
[P1id] [int] IDENTITY(1,1) NOT NULL,
[P1NAME] [varchar](50) NULL
)
CREATE TABLE [dbo].[Z_PARENT2](
[P2id] [int] IDENTITY(1,1) NOT NULL,
[P1id] [int] NOT NULL,
[P2NAME] [varchar](50) NULL
)
CREATE TABLE [dbo].[Z_CHILD](
[Cid] [int] IDENTITY(1,1) NOT NULL,
[P1id] [int] NOT NULL,
[CNAME] [varchar](50) NULL
)
INSERT INTO [dbo].[Z_PARENT1] ([P1NAME]) VALUES ('kumar'), ('pathan') , ('chris')
INSERT INTO [dbo].[Z_PARENT2] ([P1id],[P2NAME]) VALUES (1,'Mrs.kumar'), (2,'Mrs.pathan') , (3,'Mrs.chris')
INSERT INTO [dbo].[Z_CHILD] ([P1id],[CNAME]) VALUES (1,'A_kumar'),(1,'B_kumar'),(2,'X_pathan'),(2,'Y_pathan')
查询应该在 ('kumar,pathan') 中 P1NAME 列的 PARENT1 表上,所以 查询输出 应该有 2 行,
第 1 行应如下所示
{
"PARENT1":{"P1id":1,"P1NAME":"kumar"},
"PARENT2":{"P2NAME":"Mrs.kumar"},
"CHILD":[{"Cid":1,"P1id":1,"CNAME":"A_kumar"},{"Cid":2,"P1id":1,"CNAME":"B_kumar"}]
}
Row2 应该如下所示
{
"PARENT1":{"P1id":2,"P1NAME":"pathan"},
"PARENT2":{"P2NAME":"Mrs.pathan"},
"CHILD":[{"Cid":3,"P1id":2,"CNAME":"X_pathan"},{"Cid":4,"P1id":2,"CNAME":"Y_pathan"}]
}
请注意:(重要)
- 我应该能够在列 P1NAME IN ('kumar,pathan') 条件下查询 PARENT1 表,因此输出应该有 2 行
- 只有孩子应该有 JSON 数组。 (我的意思是 ARRAY_WRAPPER)和 parent1 和 parent2 不应该有数组(我的意思是 WITHOUT_ARRAY_WRAPPER)
- 父子节点之间应该存在左连接,因为如果子节点没有行,则至少应该构造父 JSON。
- 由于 parent1 和 parent2 是主表,所以 pid 应该有内部连接
【问题讨论】:
标签: sql-server jsonpath