Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Santa89 Member Откуда: Сообщений: 1497 |
Есть такой вот пример из предыдущего поста, но уже расширенный - добавился справочник автомобилей: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 ? К сообщению приложен файл. Размер - 13Kb |
15 янв 18, 14:26 [21107812] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Santa89, подзапросами for json, полагаю, так же, как и для xml. |
15 янв 18, 14:41 [21107875] Ответить | Цитировать Сообщить модератору |
Santa89 Member Откуда: Сообщений: 1497 |
Да, получилось всё вот таким способом: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 |
15 янв 18, 14:44 [21107889] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |