XML do SQL tabulky   zodpovězená otázka

SQL, XML

Dobrý den,

Chci se zeptat. Mám obyčejné XML, kde může být několik podúrovní.

<dataroot>

<products>

<nazev>produkt1</nazev>

<ceny>

<cena>1</cena>

<cena>2</cena>

<cena>3</cena>

</ceny>

</products>

</dataroot>

Potřebuji udělat jednoduchý select,aby mi vzniklo: (počet cen=počet řádků)

nazev cena

produkt1 1

produkt1 2

produkt1 3

Použil jsem

select nazev,cena from openxml (@idoc, 'dataroot/products/ceny',3)

with (nazev varchar(30) '../@nazev',cena int)

Tento select nefunguje, protože nazev by musel být v atributu products(<products nazev=produkt1>)

Lze nějakým způsobem vytvořit z tohoto xml požadovaný select??

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Já bych na to šel takhle:

DECLARE @XML xml
SET @XML = '<dataroot>
<products>
<nazev>produkt1</nazev>
<ceny>
<cena>1</cena>
<cena>2</cena>
<cena>3</cena>
</ceny>
</products>
<products>
<nazev>produkt2</nazev>
<ceny>
<cena>21</cena>
<cena>22</cena>
<cena>23</cena>
</ceny>
</products>
</dataroot>'

SELECT cena.value('../../nazev[1]', 'varchar(30)') AS Produkt,
	   cena.value('.[1]', 'int') AS Cena
  FROM @XML.nodes('/dataroot/products/ceny/cena') AS ProduktyCeny(cena)
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky moc.

Toto je přesně to, co jsem potřeboval.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback