XQuery, когда узел не существует

#xquery #xquery-sql

#xquery #xquery-sql

Вопрос:

В следующем синтаксисе XQuery я добавил в последнюю таблицу ПЕРЕКРЕСТНОЕ ПРИМЕНЕНИЕ, и, похоже, оно отфильтровывает некоторые записи. Казалось бы, это так, потому что определенный узел является необязательным. Я думал, что мой код приведет к эквиваленту ВНЕШНЕГО соединения СЛЕВА, однако оно ведет себя как ВНУТРЕННЕЕ.

 FROM   
      xxx_XML CROSS APPLY 
      XmlData.nodes('/reports/report/xxx-report') AS xxx(pref) CROSS APPLY
      pref.nodes('summary') AS Summary(sref) CROSS APPLY
      pref.nodes('data/proj-title/title-code') AS Title(tref) 
  

Есть ли лучший способ справиться с этим?

Ответ №1:

Я думал, что мой код приведет к эквиваленту ВНЕШНЕГО соединения СЛЕВА, однако оно ведет себя как ВНУТРЕННЕЕ.

Если вы хотите, чтобы apply вел себя как внешнее соединение, вы могли бы использовать outer apply .