Wyciągnięcie danych z Xml-a

0

Czść, mam pytanko. chciałbym przerobić procedurke która pobiera dane z xml-a, na potrzeby nowej funkcjonalności. Aaktualnie wygląda to tak :

 WITH w AS (
		SELECT
			issue_id indeks_obcy, 'nexto' import, 40 pw_user_id, 0 status
			,cba.core.xml_to_string((
				SELECT	TOP 1 f.value('type[1]', 'VARCHAR(10)') typeId
				FROM    xml_data.nodes('/product[1]/issues[1]/issue[1]/format') tf(f)
				OUTER APPLY f.nodes('file-protection') tp(prots)
				WHERE   prots.value('type[1]', 'VARCHAR(10)') != 'FILEOPEN' OR prots IS NULL
				ORDER BY	f.value('type[1]', 'VARCHAR(10)')
				FOR XML PATH(''), TYPE), 'typeId', ',') format

Zmiana będzie polagala na tym że jeżeli w xml występuje tak <isbn> i jest więcej niż jeden tak issue to do tabeli (do ktorej insertowane są wynik z tego xml-a) w pole issue_id wstawiam to issue_id w którym jest więcej tagów format.

Pomożecie ? Pozdrawiam gorąco ze słonecznej łodzi ;p

0

dziękuje, minik42, to znacząco pomogło w rozwiązaniu problemu ;)

0

dobra, teraz chodzi dokładnie o to :

<product> <issues> <issue> <issue_id>xxx</issue_id> </issue> <issue> <issue_id>yyy</issue_id> </issue> </issues> </product>

Zależy mi na wykonaniu selecta, który wybierze mi wszystkie issue_id z każdego taga issue... mecze się którąś godzine i mnie szlag trafia.

0

Zmieniłem taktykę. Wybieram top 1 issue ale tego ktory ma w sobie najwiecej tagów format czyli :

SELECT issue_id FROM (
SELECT top 1 tx.x.value('issue_id[1]' , 'INT') issue_id,
(SELECT COUNT(*) FROM tx.x.nodes('format')tt(x)) liczba_formatow
FROM a.xml_data.nodes('product/issues/issue') AS tx(x)
)t ORDER by t.liczba_formatow DESC

	)
	from tabela a WHERE  a.id ='12540'	
	
	

Ale to jeszcze nie jest to i nie działa... Macie jakieś pomysły ; )

1 użytkowników online, w tym zalogowanych: 0, gości: 1