Найти ребенка, где родитель НЕ является определенным элементом - PullRequest
1 голос
/ 25 мая 2011

Я хотел бы найти пустой элемент организации, где он не является непосредственным дочерним элементом элемента parentProblem.

Вот так ..

select * from Audit.PatientAudit pa
where pa.BeforeXml.exist('//*:organisation[not(../*:parentProblem)]') = 1

Но, похоже, это не работает, есть идеи?

1 Ответ

2 голосов
/ 26 мая 2011
declare @T table(BeforeXml xml)

insert into @T values
('<root>
    <parentProblem>
      <organisation/>
    </parentProblem>
  </root>'), 
('<root>
    <anotherProblem>
      <organisation/>
    </anotherProblem>
  </root>'),
('<root>
    <anotherProblem>
      <organisation ID="1"/>
    </anotherProblem>
  </root>') 

select *
from @T pa
where pa.BeforeXml.exist('//organisation[local-name(..)!="parentProblem" and count(@*)=0]') = 1
...