Я пытался создать объект json в SQL из трех таблиц
Основная таблица / сущность - это "порядок", который имеет идентификатор в качестве addressId
и далее таблица адресов имеет идентификатор страны и штата, который ссылается на
таблица состояний и таблицы стран
orderTable
Id AddressId Status
1 1 Processed
AddressTable
Id countryId stateId FirstName LastName
1 5 7 John cena
countryTable
Id Name
5 usa
StateTable
Id Name
7 DC
Вывод должен отображаться как показано ниже
{
"firstName": "John",
"lastName": "cena",
"Country" : {
"name": "usa",
"id" : "5"
},
"States" : {
"name": "DC",
"id" : "7"
}
}
Я пытался использовать этот запрос и получить похожие результаты, но я хочу удалить [] [] контейнеры объектов массива из json
[ // I want to remove this
{
"FirstName": "Steve",
"LastName": "Gates",
"country":
[ // I want to remove this
{
"name": "usa",
"id" : "5"
}
], // I want to remove this
"states" :
[ // I want to remove this
{
"name": "DC",
"id" : "7"
}
] // I want to remove this
Согласно блогу Microsoft мы можем использовать
ДЛЯ ПУТИ JSON, БЕЗ_ARRAY_WRAPPER
но если я использую это, то оно не включает страну и штат как отдельные дочерние объекты
поэтому я использовал «FOR JSON AUTO», который дает мне желаемый результат, но он дополнительно добавляет квадратные скобки к каждому объекту json
Это мой запрос
Select ord.*, (Select * from Address ad Left outer join Country country on country.Id = ad.CountryId
Left outer join State sp on sp.Id = ad.StateId where ad.Id = ord.AddressId FOR JSON AUTO) as AddressJson
, (Select * from Address ad Left outer join Country country on country.Id = ad.CountryId
Left outer join State sp on sp.Id = ad.StateId where ad.Id = ord.AddressId1 FOR JSON AUTO, WITHOUT_ARRAY_WRAPPER) as AddressJson2
from [order] ord )