Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 JSON. Как соеденить разнородные данные?  [new]
Santa89
Member

Откуда:
Сообщений: 1477
Всем привет!
Есть такая задачка: соеденить разнородные элементы в одном JSON.
Много гуглил но так и не понял как сделать...

Пример:

DECLARE @T TABLE (Name VARCHAR(50),Adress VARCHAR(50))
INSERT INTO @T SELECT 'Maksim','Moscow' UNION ALL SELECT 'Vasya','Vladivostok'

DECLARE @Сars TABLE (Brand VARCHAR(50),EngineType VARCHAR(50))
INSERT INTO @Сars SELECT 'Toyota','JZ' UNION ALL SELECT 'Nissan','RB-34'

SELECT Name,Adress FROM @T
SELECT Brand,EngineType FROM @Сars


Эти данные никак не соединены, но вывести их нужно в одном JSON:
Делаю вот так:

SELECT 
NAMES.*,
CARS.*
FROM  @T AS NAMES
FULL OUTER JOIN
@Сars AS CARS ON  1 <> 1
FOR JSON AUTO


Но получается не то что нужно...
На скриншоте попытался показать как вышло моим скриптом, и то, как нужно в итоге..
Кто нибудь готовил такой JSON?

К сообщению приложен файл. Размер - 20Kb
14 май 18, 17:37    [21408950]     Ответить | Цитировать Сообщить модератору
 Re: JSON. Как соеденить разнородные данные?  [new]
aleks222
Member

Откуда:
Сообщений: 985
Хорошо ли ты подумала, пенелопа?

SELECT NAMES = ( Select * FROM  @T FOR JSON AUTO )
         , CARS = ( Select * FROM  @Сars FOR JSON AUTO )
FOR JSON AUTO;
14 май 18, 17:42    [21408979]     Ответить | Цитировать Сообщить модератору
 Re: JSON. Как соеденить разнородные данные?  [new]
Santa89
Member

Откуда:
Сообщений: 1477
aleks222
Хорошо ли ты подумала, пенелопа?

SELECT NAMES = ( Select * FROM  @T FOR JSON AUTO )
         , CARS = ( Select * FROM  @Сars FOR JSON AUTO )
FOR JSON AUTO;


Что то не робит...
FOR JSON AUTO requires at least one table for generating JSON objects. Use FOR JSON PATH or add a FROM clause with a table name.
14 май 18, 17:43    [21408983]     Ответить | Цитировать Сообщить модератору
 Re: JSON. Как соеденить разнородные данные?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
aleks222,

агонь!

Santa89

а простой xml вам чем не угодил?
14 май 18, 17:44    [21408986]     Ответить | Цитировать Сообщить модератору
 Re: JSON. Как соеденить разнородные данные?  [new]
Santa89
Member

Откуда:
Сообщений: 1477
Ну через PATH зашло...
Причем вроде бы то что нужно!
Спасибо!!!
14 май 18, 17:44    [21408988]     Ответить | Цитировать Сообщить модератору
 Re: JSON. Как соеденить разнородные данные?  [new]
Santa89
Member

Откуда:
Сообщений: 1477
TaPaK
aleks222,

агонь!

Santa89

а простой xml вам чем не угодил?


требование такое, отдаём на сторону потом этот JSON, его парсит какой то веб-сервис
14 май 18, 17:45    [21408991]     Ответить | Цитировать Сообщить модератору
 Re: JSON. Как соеденить разнородные данные?  [new]
aleks222
Member

Откуда:
Сообщений: 985
Santa89
aleks222
Хорошо ли ты подумала, пенелопа?

SELECT NAMES = ( Select * FROM  @T FOR JSON AUTO )
         , CARS = ( Select * FROM  @Сars FOR JSON AUTO )
FOR JSON AUTO;


Что то не робит...
FOR JSON AUTO requires at least one table for generating JSON objects. Use FOR JSON PATH or add a FROM clause with a table name.


Осподе, шо тут нипанятного?

SELECT NAMES = ( Select * FROM  @T FOR JSON AUTO )
         , CARS = ( Select * FROM  @Сars FOR JSON AUTO )
FOR JSON PATH('whatisit');
14 май 18, 18:00    [21409033]     Ответить | Цитировать Сообщить модератору
 Re: JSON. Как соеденить разнородные данные?  [new]
Santa89
Member

Откуда:
Сообщений: 1477
aleks222 а как этому добру присвоить заголовок поля?
сейчас у меня выводится вот так:

К сообщению приложен файл. Размер - 2Kb
14 май 18, 18:07    [21409052]     Ответить | Цитировать Сообщить модератору
 Re: JSON. Как соеденить разнородные данные?  [new]
Santa89
Member

Откуда:
Сообщений: 1477
Сделал через:

SELECT
(
SELECT NAMES = ( Select * FROM  @T FOR JSON AUTO )
         , CARS = ( Select * FROM  @Сars FOR JSON AUTO )
FOR JSON PATH
) AS myField
14 май 18, 18:12    [21409060]     Ответить | Цитировать Сообщить модератору
 Re: JSON. Как соеденить разнородные данные?  [new]
aleks222
Member

Откуда:
Сообщений: 985
select [Имя] = (SELECT NAMES = ( Select * FROM  @T FOR JSON AUTO ), CARS = ( Select * FROM  @Сars FOR JSON AUTO ) FOR JSON PATH('whatisit') );
14 май 18, 18:13    [21409062]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить