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

Откуда:
Сообщений: 6
Добрый день.
Есть хранимая процедура, генерящая XML, в стиле:
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


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

То есть сейчас на выходе условно такое:
<division1>
	<id>ID1</id>
	<option1>value1</option1>
	<option2>value2</option2>
</division1>
<division1>
	<id>ID2</id>
	<option1>value3</option1>
	<option2>value4</option2>
</division1>


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

<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'ов наверно тоже не сработает, т.к. в них требуется одинаковое количество столбцов.

Есть какие-нибудь идеи?
4 июн 18, 09:09    [21465247]     Ответить | Цитировать Сообщить модератору
 Re: разное количество свойств в XML  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
romt,

а зачем вам разное количество столбцов?
делайте одинаковое, передавайте null-ы в случае, когда тэг должен отсутствовать
4 июн 18, 09:27    [21465305]     Ответить | Цитировать Сообщить модератору
 Re: разное количество свойств в XML  [new]
Minatavr
Member

Откуда: Чебоксары
Сообщений: 75
Посетитель
romt,

передавайте null-ы в случае, когда тэг должен отсутствовать

А какой результат получится?
4 июн 18, 10:07    [21465404]     Ответить | Цитировать Сообщить модератору
 Re: разное количество свойств в XML  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
Minatavr,

а проверить религия не позволяет? :)
4 июн 18, 10:20    [21465451]     Ответить | Цитировать Сообщить модератору
 Re: разное количество свойств в XML  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
romt
Я так понимаю, что в теле Select манипуляции со столбцами бесполезны. Столбец или будет везде, или нигде.

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

Есть какие-нибудь идеи?
Идеи зависят от того, что вам надо.
Возвращаемый набор данных ведь не может иметь разные столбцы в разных строках?
Значит, делаете один полный набор данных со всеми столбцами.
Либо решаете, как вам ещё удобнее получить данные.
4 июн 18, 11:03    [21465677]     Ответить | Цитировать Сообщить модератору
 Re: разное количество свойств в XML  [new]
Minatavr
Member

Откуда: Чебоксары
Сообщений: 75
Посетитель
Minatavr,

а проверить религия не позволяет? :)

Нет возможности под рукой. Но мне любопытно, что получится?
Элемент будет опущен? Или будет пустой элемент с атрибутом xsi:nil="true"?
4 июн 18, 11:30    [21465818]     Ответить | Цитировать Сообщить модератору
 Re: разное количество свойств в XML  [new]
invm
Member

Откуда: Москва
Сообщений: 9345
Minatavr
Нет возможности под рукой. Но мне любопытно, что получится?
Если есть интернет, то есть и возможность - http://rextester.com/live/KHI28700
4 июн 18, 12:15    [21466030]     Ответить | Цитировать Сообщить модератору
 Re: разное количество свойств в XML  [new]
Minatavr
Member

Откуда: Чебоксары
Сообщений: 75
Спасибо.
4 июн 18, 15:39    [21467041]     Ответить | Цитировать Сообщить модератору
 Re: разное количество свойств в XML  [new]
romt
Member

Откуда:
Сообщений: 6
alexeyvg
Идеи зависят от того, что вам надо.
Возвращаемый набор данных ведь не может иметь разные столбцы в разных строках?
Значит, делаете один полный набор данных со всеми столбцами.
Либо решаете, как вам ещё удобнее получить данные.


Возвращаемый набор реляционной базы данных не может иметь разные столбцы в разных строках.
А вот конкретная спецификация пакета XML - может.
В этом то и задача.
4 июн 18, 16:30    [21467251]     Ответить | Цитировать Сообщить модератору
 Re: разное количество свойств в XML  [new]
romt
Member

Откуда:
Сообщений: 6
invm
Minatavr
Нет возможности под рукой. Но мне любопытно, что получится?
Если есть интернет, то есть и возможность - http://rextester.com/live/KHI28700


Спасибо.
Я почему-то полагал, что NULL сгенерирует пустое поле.
4 июн 18, 16:31    [21467258]     Ответить | Цитировать Сообщить модератору
 Re: разное количество свойств в XML  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
romt,

на здоровье.
только зачем полагать, если можно проверить, а не ждать готового решения на формуах?
4 июн 18, 16:35    [21467274]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить