Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / разное количество свойств в XML / 11 сообщений из 11, страница 1 из 1
04.06.2018, 09:09
    #39654684
romt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное количество свойств в XML
Добрый день.
Есть хранимая процедура, генерящая XML, в стиле:
Код: 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.
BEGIN

  SELECT (			
    SELECT	(  SELECT	
       (SELECT	
          t1.column1 option1,
          t1.column2 option2,
          t2.column3 option3,
          t2.column4 option4								
        FROM table1 t1 INNER JOIN table2 t2 ON t1.id=t2.link_column
        WHERE t1.year='2018'  
        FOR XML PATH('division1'),type) division1,

        (SELECT	
          t4.column6 option5,
          t4.column7 option6,
          t3.column8 option7,
          t3.column9 option8								
        FROM table3 t3 INNER JOIN table4 t4 ON t3.id=t3.link_column
        WHERE t1.year='2018'  
        FOR XML PATH('division2'),type) division2,
							
    FOR XML PATH ('superdivision'),type)
) [XML]

END



Потребовалось её изменить так, что бы в зависимости от значения одного из столбцов, в некоторых элементах было разное количество вложенных элементов.

То есть сейчас на выходе условно такое:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<division1>
	<id>ID1</id>
	<option1>value1</option1>
	<option2>value2</option2>
</division1>
<division1>
	<id>ID2</id>
	<option1>value3</option1>
	<option2>value4</option2>
</division1>



А надо, что бы при option1=value3 добавлялось ещё одно поле:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<division1>
	<id>ID1</id>
	<option1>value1</option1>
	<option2>value2</option2>
</division1>
<division1>
	<id>ID2</id>
	<option1>value3</option1>
	<option2>value4</option2>
	<option100>value100</option100>
</division1>



Как это реализовать?

Я так понимаю, что в теле Select манипуляции со столбцами бесполезны. Столбец или будет везде, или нигде.

Объединение SELECT'ов наверно тоже не сработает, т.к. в них требуется одинаковое количество столбцов.

Есть какие-нибудь идеи?
...
Рейтинг: 0 / 0
04.06.2018, 09:27
    #39654696
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное количество свойств в XML
romt,

а зачем вам разное количество столбцов?
делайте одинаковое, передавайте null-ы в случае, когда тэг должен отсутствовать
...
Рейтинг: 0 / 0
04.06.2018, 10:07
    #39654709
Minatavr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное количество свойств в XML
Посетительromt,

передавайте null-ы в случае, когда тэг должен отсутствовать
А какой результат получится?
...
Рейтинг: 0 / 0
04.06.2018, 10:20
    #39654715
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное количество свойств в XML
Minatavr,

а проверить религия не позволяет? :)
...
Рейтинг: 0 / 0
04.06.2018, 11:03
    #39654735
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное количество свойств в XML
romtЯ так понимаю, что в теле Select манипуляции со столбцами бесполезны. Столбец или будет везде, или нигде.

Объединение SELECT'ов наверно тоже не сработает, т.к. в них требуется одинаковое количество столбцов.

Есть какие-нибудь идеи?Идеи зависят от того, что вам надо.
Возвращаемый набор данных ведь не может иметь разные столбцы в разных строках?
Значит, делаете один полный набор данных со всеми столбцами.
Либо решаете, как вам ещё удобнее получить данные.
...
Рейтинг: 0 / 0
04.06.2018, 11:30
    #39654755
Minatavr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное количество свойств в XML
ПосетительMinatavr,

а проверить религия не позволяет? :)
Нет возможности под рукой. Но мне любопытно, что получится?
Элемент будет опущен? Или будет пустой элемент с атрибутом xsi:nil="true"?
...
Рейтинг: 0 / 0
04.06.2018, 12:15
    #39654791
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное количество свойств в XML
MinatavrНет возможности под рукой. Но мне любопытно, что получится?Если есть интернет, то есть и возможность - http://rextester.com/live/KHI28700
...
Рейтинг: 0 / 0
04.06.2018, 15:39
    #39654982
Minatavr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное количество свойств в XML
Спасибо.
...
Рейтинг: 0 / 0
04.06.2018, 16:30
    #39655057
romt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное количество свойств в XML
alexeyvgИдеи зависят от того, что вам надо.
Возвращаемый набор данных ведь не может иметь разные столбцы в разных строках?
Значит, делаете один полный набор данных со всеми столбцами.
Либо решаете, как вам ещё удобнее получить данные.

Возвращаемый набор реляционной базы данных не может иметь разные столбцы в разных строках.
А вот конкретная спецификация пакета XML - может.
В этом то и задача.
...
Рейтинг: 0 / 0
04.06.2018, 16:31
    #39655061
romt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное количество свойств в XML
invmMinatavrНет возможности под рукой. Но мне любопытно, что получится?Если есть интернет, то есть и возможность - http://rextester.com/live/KHI28700

Спасибо.
Я почему-то полагал, что NULL сгенерирует пустое поле.
...
Рейтинг: 0 / 0
04.06.2018, 16:35
    #39655065
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное количество свойств в XML
romt,

на здоровье.
только зачем полагать, если можно проверить, а не ждать готового решения на формуах?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / разное количество свойств в XML / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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