powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JSON. Блок из другой таблицы + вложенный массив...
3 сообщений из 3, страница 1 из 1
JSON. Блок из другой таблицы + вложенный массив...
    #39584431
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой вот пример из предыдущего поста, но уже расширенный - добавился справочник автомобилей:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
DECLARE @T TABLE
(
	Name VARCHAR(50),
	Adress VARCHAR(50),
	PhoneType VARCHAR(50),
	PhoneNumber VARCHAR(50)
)

DECLARE @CARS TABLE
(
DriverName VARCHAR(50),
Car VARCHAR(50),
CarType VARCHAR(50)  
)

INSERT INTO @T
SELECT 'Petya','Moscow','Home','25-9-21'
UNION ALL
SELECT 'Petya','Moscow','Mobile','8985-349-00-XX'
UNION ALL
SELECT 'Vasya','Vladivostok','Mobile','8929-585-34-XX'


INSERT INTO @CARS
SELECT 'Petya','Honda','Sedan'
UNION ALL
SELECT 'Vasya', 'Toyota','Hatchback'


SELECT * FROM @T
SELECT * FROM @CARS


SELECT DISTINCT
t1.Name,
t1.Adress,
Cars.Car,
Cars.CarType,
PhoneNumbers.PhoneType,
PhoneNumbers.PhoneNumber
from
@T t1
INNER JOIN @T PhoneNumbers ON t1.Name = PhoneNumbers.Name
INNER JOIN @CARS Cars ON t1.Name = Cars.DriverName
FOR JSON AUTO



Возвращаемый JSON получается не тот который нужен, получилось так, что массив телефонов оказался внутри блока CARS. (см.скриншот)
Как сделать так, чтобы блок CARS показался отдельно и был привязан к атрибутам человека Adress и Name и стоял на их уровне, и не включал бы в себя массив PhoneNumbers ?
...
Рейтинг: 0 / 0
JSON. Блок из другой таблицы + вложенный массив...
    #39584447
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa89,

подзапросами for json, полагаю, так же, как и для xml.
...
Рейтинг: 0 / 0
JSON. Блок из другой таблицы + вложенный массив...
    #39584452
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, получилось всё вот таким способом:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SELECT DISTINCT
t1.Name AS [Person.Name],
t1.Adress AS [Person.Adress],
(
	SELECT 
	t2.PhoneType,
	t2.PhoneNumber
	FROM  @T as t2 
	WHERE t2.Name = t1.Name
	FOR JSON PATH
) as [phones],
(
	SELECT 
	t3.Car,
	t3.CarType
	FROM  @CARS as t3 
	WHERE t3.DriverName = t1.Name
	FOR JSON PATH
) as [cars]
FROM
@T t1
FOR JSON PATH
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JSON. Блок из другой таблицы + вложенный массив...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]