मेरे पास टेबल संरचना के नीचे है जहां इसमें एक से कई मैपिंग हैं

CREATE TABLE #Primary(PrimaryId int,ItemName varchar(10))
CREATE TABLE #Sub1(PrimaryId int,SubId int,SubName1 varchar(10))
CREATE TABLE #Sub2(PrimaryId int,Sub2Id int,SubName2 varchar(10))


INSERT INTO #Primary
VALUES(1,'My Item1'),(2,'My Item2')

INSERT INTO #Sub1 values(1,1,'Sub1'),(1,2,'Sub2')

INSERT INTO #Sub2 values(1,1,'Name1'),(1,2,'Name2')

मैं इसमें से जेसन के नीचे उत्पादन करने की कोशिश कर रहा हूं

[
  {
    "PrimaryId": 1,
    "ItemName": "My Item1",
    "sb1": [
      {
        "SubId": 1,
        "SubName1": "Sub1"
      },
      {
        "SubId": 2,
        "SubName1": "Sub2"
      }
    ],
    "sb2": [
      {
        "Sub2Id": 1,
        "SubName2": "Name1"
      },
      {
        "Sub2Id": 2,
        "SubName2": "Name2"
      }
    ]
  }
]

मैंने अब तक नीचे कोशिश की है। एक तालिका के साथ जुड़ने से आउटपुट संरचना की उम्मीद होती है, लेकिन जब दूसरी तालिका जुड़ती है तो यह गड़बड़ हो जाती है

select p.PrimaryId,p.ItemName,sb1.SubId,sb1.SubName1,sb2.Sub2Id,sb2.SubName2
from #Primary p
    inner join #Sub1 sb1 on p.PrimaryId = sb1.PrimaryId
    inner join #Sub2 sb2 on p.PrimaryId = sb2.PrimaryId
FOR JSON AUTO
2
user12073359 13 जिंदा 2021, 13:30

1 उत्तर

सबसे बढ़िया उत्तर

आप SELECT में कुछ उप प्रश्नों का उपयोग करना चाहेंगे, यहां वे परिणाम प्राप्त करें जो आप चाहते हैं:

SELECT P.PrimaryID,
       P.ItemName,
       (SELECT S1.SubId,
               S1.SubName1
        FROM #Sub1 S1
        WHERE S1.PrimaryId = P.PrimaryId
        FOR JSON AUTO) AS sb1,
       (SELECT S2.Sub2Id,
               S2.SubName2
        FROM #Sub2 S2
        WHERE S2.PrimaryId = P.PrimaryId
        FOR JSON AUTO) AS sb2
FROM #Primary P
WHERE P.PrimaryID = 1
FOR JSON AUTO;

डीबी<>बेला

1
Larnu 13 जिंदा 2021, 13:45