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

Откуда:
Сообщений: 135
Уважаемые коллеги,
подскажите, пожалуйста, где я ошибаюсь в запросе:
select top (5) 
1 as Tag,
null as parent,
KP.inn as [KP!1!inn],
KP.num_sf as [KP!1!num_sf],
null as [SF!2!ВидПолн]
from dbo.kniga_prodag as KP inner join dbo.klient2005 as KL on KP.kod_predpr =KL.num_cons  
where KL.SF_noP =0 
union all
select top (10)
2,
1,
KP.inn,
KP.num_sf,
SF.ВидПолн 
from dbo.view_sch_fact_doc as SF inner join dbo.kniga_prodag as KP ON KP.kod_predpr = SF.kod_predpr AND KP.nomer = SF.nomer AND 
KP.god_usl = SF.god AND KP.mes_usl = SF.mes
where SF.[sum-summa] >0 
for xml explicit, root('file')

формирует вот такой документ:
<file>
  <KP inn="6661100887" num_sf="4/304/СПС" />
  <KP inn="6661009187" num_sf="4/625/СПС" />
  <KP inn="6668013168" num_sf="4/8246/СПС" />
  <KP inn="6606001684" num_sf="4/8251/СПС" />
  <KP inn="6625021894" num_sf="4/8259/СПС">
    <SF ВидПолн="СС Деловые бумаги" />
    <SF ВидПолн="СС Деловые бумаги" />
    <SF ВидПолн="СС Деловые бумаги" />
    <SF ВидПолн="СС Деловые бумаги" />
    <SF ВидПолн="СС Деловые бумаги" />
    <SF ВидПолн="СПС КонсультантПлюс: Свердловская область" />
    <SF ВидПолн="СПС КонсультантПлюс: Свердловская область" />
    <SF ВидПолн="СПС КонсультантПлюс: Свердловская область" />
    <SF ВидПолн="СПС КонсультантПлюс: Свердловская область" />
    <SF ВидПолн="СПС КонсультантПлюс: Свердловская область" />
  </KP>
</file>

Это не верный вывод ... строки SF дожны быть у каждого KP, я проверял по отдельным запросам ... И не соответствуют они этой KP, а другой, первой строке KP ...
заранее спасибо ...
26 авг 13, 10:16    [14754400]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
order by нужен правильный. соответствующие строки должны выдаваться в том порядке, в котором будут следовать теги.

order by [KP!1!inn], Tag
вам подойдет, наверное.
26 авг 13, 10:34    [14754484]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
SerRock
Member

Откуда:
Сообщений: 135
daw,
спасибо за совет, я уже пробовал и с упорядывачиванием ... я понять не могу, запрос возвращает записи для каждой KP, это наименования в счете фактуре ... для первой их должно быть 8, для следующей 1, потом 2, потом 5 и т.д., но 10 нигде нет ...
а xml показывает только для одной какой-то, да еще и неправильно ... почему то 10 ... наверное данные криво возвращаются, с другой стороны обычный select дает правильную выборку ...
26 авг 13, 18:48    [14757352]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
> спасибо за совет, я уже пробовал и с упорядывачиванием ...

не так, значит, пробовали. то, какой из тегов SF к какому KP будет относиться, определяется именно правильным порядком строк. запустите свой запрос без for xml - в каком порядке будут выданы строки, в таком и будут следовать теги.
ну, если уж хотите, чтоб прямо готовый запрос вам дали - приводите скрипт на создание таблиц и заполнение их тестовыми данными.
26 авг 13, 21:20    [14757700]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
у вас с вашими top и where получается, поди, что первый запрос выдает данные, никак не связанные со вторым (а for xml explicit ничто такое не заботит - для него все только порядком строк решается). уберите for xml и посмотрите, что там.
26 авг 13, 23:12    [14758020]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
SerRock
Member

Откуда:
Сообщений: 135
daw,
да, именно не связаны одни с другими ... а как это, что определяется только порядком строк? Я нигде такого не прочитал (я не то, чтобы не верю вам, но перед тем, как писать на форум, я я порылся в книжках и и-нете) ... написано, что первые два поля определяют связь данных ... т.е. я вывожу первые 5 записей КР и до 10 дочерних записей каждой из них ... разве нет ..?
К сожалению я не могу привести результаты данных ... я по 3G очень плохо цепляюсь к своему рабочему столу ... если это принципиально, то проверю позже по возвращению и приведу их для обсуждения ...
27 авг 13, 08:21    [14758325]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
> т.е. я вывожу первые 5 записей КР и до 10 дочерних записей каждой из них ... разве нет ..?

да. и вот то, какая из 10 SF для какой конкретно из 5 KP является дочерней определяется порядком следования строк.

http://msdn.microsoft.com/en-us/library/ms189068.aspx
BOL
Universal Table Row Ordering


In constructing the XML, the rows in the universal table are processed in order. Therefore, to retrieve the correct children instances associated with their parent, the rows in the rowset must be ordered so that each parent node is immediately followed by its children.
27 авг 13, 09:12    [14758505]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
SerRock
Member

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

спасибо ... кажеися дошло, это же union объединение, т.е. произвольно независимое, а пара певых полей ставит в соответствие только теги и атрибуты ... может в таком случае "надежнее" пользоваться конструкцией path ..? я так понимаю, что в path конструкции основной - вложенный запрос автоматичкски формируеи иерархию
27 авг 13, 10:53    [14759126]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
SerRock
Member

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

подскажите, пожалуйста, как создать документ вот такого вида (это образец счета фактуры ФНС к которому я стремлюсь)
<Файл ИдФайл="ON_SFAKT_2AE557A6326-34E7-19D5-0374-8CC26CC410C2_2BM-9012410008-2012081305471506652820000000000_20121221_03e83d10-e3da-4b6a-93b0-fa8169bb71f0" ВерсФорм="5.01">
<СвУчДокОбор ИдОтпр="2BM-9012410008-2012081305471506652820000000000" ИдПок="2AE557A6326-34E7-19D5-0374-8CC26CC410C2">
<СвОЭДОтпр НаимОрг="ЗАО "ПФ "СКБ Контур"" ИННЮЛ="6663003127" ИдЭДО="2bm"/>
</СвУчДокОбор>
<Документ КНД="1115101">
<СвСчФакт НомерСчФ="1" ДатаСчФ="21.12.2012" КодОКВ="643">...</СвСчФакт>
<ТаблСчФакт>...</ТаблСчФакт>
<Подписант>...</Подписант>
</Документ>
</Файл>

проблема в понимании как разместить два не связанных документа
<СвУчДокОбор ... </СвУчДокОбор>
и
<Документ ... </Документ>
т.е. сам с/ф (<Документ ... </Документ>) я собираю union all, как собрать данные участников ( <СвУчДокОбор ... </СвУчДокОбор>) я тоже понимаю, ну, тоже union all ...
а как их запихнуть внутрь тега <Файл , чтобы размещались независимо - не понимаю ...
или тоже union all ... если вообще такое возможно нагромождение написать ...
3 сен 13, 11:48    [14788515]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
Antoshka
Member

Откуда:
Сообщений: 828
Обязательно собирать XML одним запросом? Может проще собирать по фрагментам, а их, в свою очередь, конкатенацией в полный документ?
3 сен 13, 11:57    [14788567]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
как-то так, схематично если:
select 1 as Tag, null as Parent - для Файл.
union all
select 2 as Tag, 1 as Parent - для СвУчДокОбор
union all
select 3 as Tag, 2 as Parent - для СвОЭДОтпр
union all
select 4 as Tag, 1 as Parent - для Документ 
... 

ну и упорядочить правильно, опять же.
3 сен 13, 12:00    [14788588]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
SerRock
Member

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

ок, спасибо ... я таким путем было и пошел ... но компилятор ругается, что
сообщение
Сообщение 6806, уровень 16, состояние 2, строка 1
Необъявленный идентификатор тега 4 используется в запросе FOR XML EXPLICIT.

непонял ... а как его объявить ...
3 сен 13, 14:24    [14789474]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
> непонял ... а как его объявить ...

вы бы запрос свой показали. а так, раз сказано select 4 as Tag, то должно быть и что-нибудь типа [TagName!4 ...]
3 сен 13, 14:38    [14789562]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
SerRock
Member

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

запрос вот:
select
1 as Tag,
0 as parent,
'123'  as [idFile!1!idFile],
'111' as [idFile!1!VerForm],
null as [KP!2!kod],
null as [KP!2!inn], 
null as [KP!2!num_sf],
null as [KP!2!god_usl],
null as [KP!2!mes_usl],
null as [SF!3!ВидПолн]
union all
select
4 ,
1 ,
'001',
'002',
'003',
'004',
'006',
'007',
'008',
'009' 
union all
select top 3
2,
1,
null,
null,
KP.kod ,
KP.inn ,
KP.num_sf ,
kp.god_usl ,
kp.mes_usl ,
null as [SF!2!ВидПолн]
from dbo.kniga_prodag as KP 
where (KP.inn = '6663066293')-- and KP.num_sf ='8/12/СПС'--[sum-summa] >0 and KL.SF_noP =0 AND 
union all
select top 20
3,
2,
null,
null,
KP.kod,
KP.inn,
KP.num_sf,
kp.god_usl,
kp.mes_usl,
SF.ВидПолн 
from dbo.kniga_prodag as KP inner join dbo.klient2005 as KL on KP.kod_predpr =KL.num_cons  
inner join dbo.view_sch_fact_doc as SF ON KP.kod_predpr = SF.kod_predpr AND KP.nomer = SF.nomer AND 
KP.god_usl = SF.god AND KP.mes_usl = SF.mes
where SF.[sum-summa] >0 and KL.SF_noP =0 AND (KP.inn = '6663066293') --KP.num_sf ='8/12/СПС'-- and
order by [KP!2!kod], [SF!3!ВидПолн]
for xml explicit--, root('file')

возвращает записи в общем правильно:
1	0	123	111	NULL	NULL	NULL	NULL	NULL	NULL
4	1	001	002	3	004	006	7	8	009
2	1	NULL	NULL	2615	6663066293	7/12/СПС	2007	4	NULL
3	2	NULL	NULL	2615	6663066293	7/12/СПС	2007	4	СПС КонсультантПлюс: Версия Проф
3	2	NULL	NULL	2615	6663066293	7/12/СПС	2007	4	СПС КонсультантПлюс: Свердловская область
3	2	NULL	NULL	2615	6663066293	7/12/СПС	2007	4	СС Деловые бумаги
3	2	NULL	NULL	2615	6663066293	7/12/СПС	2007	4	СС КонсультантАрбитраж: ФАС Уральского округа
3	2	NULL	NULL	2615	6663066293	7/12/СПС	2007	4	СС КонсультантБухгалтер: Корреспонденция счетов
3	2	NULL	NULL	2615	6663066293	7/12/СПС	2007	4	СС КонсультантПлюс: Комментарии законодательства
3	2	NULL	NULL	2615	6663066293	7/12/СПС	2007	4	СС КонсультантСудебнаяПрактика: Решения высших судов
3	2	NULL	NULL	2615	6663066293	7/12/СПС	2007	4	СС КонсультантСудебнаяПрактика: Суды Свердловской области
3	2	NULL	NULL	2615	6663066293	7/12/СПС	2007	4	СС КонсультантФинансист
2	1	NULL	NULL	5467	6663066293	8/12/СПС	2007	5	NULL
3	2	NULL	NULL	5467	6663066293	8/12/СПС	2007	5	СПС КонсультантПлюс: Версия Проф
3	2	NULL	NULL	5467	6663066293	8/12/СПС	2007	5	СПС КонсультантПлюс: Свердловская область
3	2	NULL	NULL	5467	6663066293	8/12/СПС	2007	5	СС Деловые бумаги
3	2	NULL	NULL	5467	6663066293	8/12/СПС	2007	5	СС КонсультантАрбитраж: ФАС Уральского округа
3	2	NULL	NULL	5467	6663066293	8/12/СПС	2007	5	СС КонсультантБухгалтер: Корреспонденция счетов
3	2	NULL	NULL	5467	6663066293	8/12/СПС	2007	5	СС КонсультантПлюс: Комментарии законодательства
3	2	NULL	NULL	5467	6663066293	8/12/СПС	2007	5	СС КонсультантСудебнаяПрактика: Решения высших судов
3	2	NULL	NULL	5467	6663066293	8/12/СПС	2007	5	СС КонсультантСудебнаяПрактика: Суды Свердловской области
3	2	NULL	NULL	5467	6663066293	8/12/СПС	2007	5	СС КонсультантФинансист
2	1	NULL	NULL	11449	6663066293	10/12/СПС	2007	7	NULL
3	2	NULL	NULL	11449	6663066293	10/12/СПС	2007	7	СПС КонсультантПлюс: Версия Проф
3	2	NULL	NULL	11449	6663066293	10/12/СПС	2007	7	СС Деловые бумаги

но если выводить в xml - вышеуказанная ошибка ...
какая то ошибка в этом чертовом синтаксисе ...
3 сен 13, 15:05    [14789726]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
SerRock
select
4 ,
1 ,
'001',
'002',
'003',
'004',
'006',
'007',
'008',
'009' 



а это что такое имелось в виду?
3 сен 13, 15:14    [14789788]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
SerRock
Member

Откуда:
Сообщений: 135
заголовки не попали ...

Tag parent idFile!1!idFile idFile!1!VerForm KP!2!kod KP!2!inn KP!2!num_sf KP!2!god_usl KP!2!mes_usl SF!3!ВидПолн
1 0 123 111 NULL NULL NULL NULL NULL NULL
4 1 1 2 3 4 6 7 8 9
2 1 NULL NULL 2615 6663066293 7/12/СПС 2007 4 NULL
3 2 NULL NULL 2615 6663066293 7/12/СПС 2007 4 СПС КонсультантПлюс: Версия Проф
3 2 NULL NULL 2615 6663066293 7/12/СПС 2007 4 СПС КонсультантПлюс: Свердловская область
3 2 NULL NULL 2615 6663066293 7/12/СПС 2007 4 СС Деловые бумаги
3 2 NULL NULL 2615 6663066293 7/12/СПС 2007 4 СС КонсультантАрбитраж: ФАС Уральского округа
3 2 NULL NULL 2615 6663066293 7/12/СПС 2007 4 СС КонсультантБухгалтер: Корреспонденция счетов
3 2 NULL NULL 2615 6663066293 7/12/СПС 2007 4 СС КонсультантПлюс: Комментарии законодательства
3 2 NULL NULL 2615 6663066293 7/12/СПС 2007 4 СС КонсультантСудебнаяПрактика: Решения высших судов
3 2 NULL NULL 2615 6663066293 7/12/СПС 2007 4 СС КонсультантСудебнаяПрактика: Суды Свердловской области
3 2 NULL NULL 2615 6663066293 7/12/СПС 2007 4 СС КонсультантФинансист
2 1 NULL NULL 5467 6663066293 8/12/СПС 2007 5 NULL
3 2 NULL NULL 5467 6663066293 8/12/СПС 2007 5 СПС КонсультантПлюс: Версия Проф
3 2 NULL NULL 5467 6663066293 8/12/СПС 2007 5 СПС КонсультантПлюс: Свердловская область
3 2 NULL NULL 5467 6663066293 8/12/СПС 2007 5 СС Деловые бумаги
3 2 NULL NULL 5467 6663066293 8/12/СПС 2007 5 СС КонсультантАрбитраж: ФАС Уральского округа
3 2 NULL NULL 5467 6663066293 8/12/СПС 2007 5 СС КонсультантБухгалтер: Корреспонденция счетов
3 2 NULL NULL 5467 6663066293 8/12/СПС 2007 5 СС КонсультантПлюс: Комментарии законодательства
3 2 NULL NULL 5467 6663066293 8/12/СПС 2007 5 СС КонсультантСудебнаяПрактика: Решения высших судов
3 2 NULL NULL 5467 6663066293 8/12/СПС 2007 5 СС КонсультантСудебнаяПрактика: Суды Свердловской области
3 2 NULL NULL 5467 6663066293 8/12/СПС 2007 5 СС КонсультантФинансист
2 1 NULL NULL 11449 6663066293 10/12/СПС 2007 7 NULL
3 2 NULL NULL 11449 6663066293 10/12/СПС 2007 7 СПС КонсультантПлюс: Версия Проф
3 2 NULL NULL 11449 6663066293 10/12/СПС 2007 7 СС Деловые бумаги
3 сен 13, 15:14    [14789791]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
SerRock
Member

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

это просто метаданные ... в реальном коде я туда подставлю переменные/данные
3 сен 13, 15:16    [14789799]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
SerRock
Member

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

точнее это и есть <СвУчДокОбор ... </СвУчДокОбор>
3 сен 13, 15:17    [14789810]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
SerRock
точнее это и есть <СвУчДокОбор ... </СвУчДокОбор>


так, расписать надо было:

select
1 as Tag,
0 as parent,
'123'  as [idFile!1!idFile],
'111' as [idFile!1!VerForm],

null as [СвУчДокОбор!4!ИдОтпр],
null as [СвУчДокОбор!4!ИдПок],

null as [KP!2!kod],
null as [KP!2!inn], 
null as [KP!2!num_sf],
null as [KP!2!god_usl],
null as [KP!2!mes_usl],
null as [SF!3!ВидПолн]
3 сен 13, 15:22    [14789838]     Ответить | Цитировать Сообщить модератору
 Re: не формируется xml документ  [new]
SerRock
Member

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

спасибо, помогло ... я пока такими шагами дойду до конца - обвалю все сроки ...

Конфуций
только идущий осилит дорогу ...
3 сен 13, 15:38    [14789905]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить