1
votes

XQuery - obtenir le nœud enfant basé sur le nœud parent

J'ai essayé de comprendre comment récupérer un nœud enfant basé sur un nœud parent en utilisant SQL . Ce que j'ai essayé jusqu'à présent, c'est:

PostalCode
---------
011369
01136229
01136255

Afin d'obtenir les noms de rue, j'ai utilisé la requête ci-dessous qui fonctionne bien:

select
xx.value(N'(PostalCode)[1]', N'nvarchar(50)') AS PostalCode

from @streets.nodes(N'/ArrayOfStreetEntity/StreetEntity/PostalNumbers/PostalNo') AS XTbl(xx)
where xx.value(N'(/ArrayOfStreetEntity/StreetEntity/Name)[1]', 'varchar(max)')='Street name 1'


0 commentaires

3 Réponses :



1
votes

Spécifiez StreetEntity dans le chemin des nœuds et remplacez le chemin de la valeur par le premier code postal:

SELECT
    xx.value(N'(PostalNumbers/PostalNo/PostalCode)[1]', N'nvarchar(50)') AS PostalCode
FROM @streets.nodes(N'/ArrayOfStreetEntity/StreetEntity') AS XTbl(xx)
WHERE xx.value(N'(Name)[1]', 'varchar(max)') = 'Street name 1';


0 commentaires

1
votes

Vous étiez proche:

SELECT xx.value(N'(PostalNumbers/PostalNo/PostalCode)[1]', N'nvarchar(50)') AS PostalCode
FROM @streets.nodes(N'/ArrayOfStreetEntity/StreetEntity') AS XTbl(xx)
WHERE xx.value(N'Name[1]', N'varchar(50)') = 'Street name 1';


0 commentaires