sql >> Databáze >  >> RDS >> Sqlserver

CROSS APPLY na jmenný prostor, dílčí uzly vrátí duplicitní záznamy

Zkuste toto:

;WITH XMLNAMESPACES ('http://3ecompany.com/webservices/catalogitemxml' as CI)
SELECT 
    Identifier = CI.value('(CI:ProductIdentifiers[1]/CI:Identifier)[1]', 'varchar(9)'),
    CAS_Number = Ingred.value('(CI:Cas)[1]', 'varchar(20)'),
    Chemical_Name = Ingred.value('(CI:ChemicalName)[1]', 'varchar(100)')
FROM
    @XmlTable
CROSS APPLY
    XMLData.nodes('/ArrayOfCatalogItem/CatalogItem/CI:Msds') AS XT(CI)
CROSS APPLY
    CI.nodes('CI:Ingredients') AS XT18(Ingred)

Dostávám seznam fragmentů XML pro každý <Msds> node, az toho jsem si vzal ProductIdentifiers info. Navíc z tohoto uzlu také získám seznam dílčích fragmentů XML pro <Ingredients> uzly a chytit se z nich podrobně.

Můj výstup vypadá takto:




  1. Odesílání dat formuláře do MySQL pomocí nodejs w/ Express

  2. Pořadí MySQL podle relevance

  3. Potřebuji htmlentities() nebo htmlspecialchars() v připravených příkazech?

  4. Počítání nenulových sloupců poněkud zvláštním způsobem