powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / разное количество свойств в XML
11 сообщений из 11, страница 1 из 1
разное количество свойств в XML
    #39654684
romt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Есть хранимая процедура, генерящая 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
разное количество свойств в XML
    #39654696
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romt,

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

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

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

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

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

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

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

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

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


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