Member 12640353 Ответов: 1

Как объединить атрибуты XML с таблицей


мне нужно объединить XML с базовой таблицей

Объявить sqxml xml = '<education>
<Type scienceid ='16' nonscienceid="51" class='A'/>

<Type scienceid ='18' nonscienceid="50" class='B'/>

<Type scienceid ='16' nonscienceid="50" class='C'/>
'


Выберите t.у.scienceid,Т.у.nonscienceid от студента присоединиться, Перейдя на студента.Type @sqlxml.node[/Education/Type/@scienceid ='16']

Что я уже пробовал:

Объявить sqxml xml = '<education>
<Type scienceid ='16' nonscienceid="51" class='A'/>

<Type scienceid ='18' nonscienceid="50" class='B'/>

<Type scienceid ='16' nonscienceid="50" class='C'/>
'


Выберите t.у.scienceid,Т.у.nonscienceid от студента присоединиться, Перейдя на студента.Type @sqlxml.node[/Education/Type/@scienceid ='16']

я получаю ошибку XQUERY

CHill60

И что это за ошибка ?

1 Ответов

Рейтинг:
2

Santosh kumar Pithani

<pre>
DECLARE @sqxml XML, @xid INT;
SET  @sqxml= '<education>
                <Type scienceid =''16'' nonscienceid=''51'' class=''A''/>
                
                <Type scienceid =''18'' nonscienceid=''50'' class=''B''/>
                
                <Type scienceid =''16'' nonscienceid=''50'' class=''C''/>
              </education>';

exec sp_xml_prepareDocument @xid OUTPUT,@sqxml

;WITH CTE AS(SELECT * FROM OPENXML(@xid,'education/*') 
                                WITH (scienceid VARCHAR(10) '@scienceid',
                                      nonscienceid VARCHAR(10) '@nonscienceid',
						              class VARCHAR(10) '@class'
									  )
									  WHERE scienceid=16
			)

 SELECT * FROM CTE --INNER JOIN Student on(condtions)
--Thank you--;


Member 12640353

Синтаксический анализ XML: строка 2, символ 49, ожидался строковый литерал

Santosh kumar Pithani

Есть ли у вас выполненный запрос решения?

Member 12640353

да, я выполнил запрос.
Объявить @sqxml XML, @xid INT;
SET @sqxml= N'<education>
<Type scienceid ='16' nonscienceid="51" class='A'/>
<Type scienceid ='18' nonscienceid="50" class='B'/>
&л;тип scienceid ='16' nonscienceid="50" класс= " с " /&ГТ; &ЛТ;\образование&ГТ;'

exec sp_xml_prepareDocument @xid OUTPUT,@sqxml
;С CTE AS(SELECT * FROM OPENXML(@xid,'education/*')
С помощью (scienceid VARCHAR(10) '@scienceid',
nonscienceid VARCHAR(10) '@nonscienceid',
класс VARCHAR(10) '@class'
) ----Где scienceid=16
)
Выберите * от КТР --внутреннее соединение студента на студента.ИД типа =КТР.scienceid

Я получаю ошибку синтаксического анализа XML: строка 2, символ 49, ожидался строковый литерал. На самом деле я хочу присоединиться к Typeid с scienceid

Santosh kumar Pithani

Здравствуйте, вы сделали небольшую ошибку, то есть дали "<\education>"
вместо "</education>". пожалуйста, проверьте один раз запрос решения.

Member 12640353

Спасибо.. Это работает

Santosh kumar Pithani

Добро пожаловать..!

Santosh kumar Pithani

Здравствуйте, пожалуйста, отметьте это как решение, чтобы его можно было использовать для других.