xqueryを使用して従業員がいない従業員を検索しようとしていますが、クエリを実行するとき、私が知っている情報は正しくありません。以下は、私が使用しているクエリです:xqueryを使用して従業員がいない従業員を探す
xquery
let $d:=doc("/public/book/company.xml")
let $e:=$d/companyDB/employees/employee
for $name in $d/companyDB/employees/employee
where count($e/dependent)<1
return <e>{$e/fname}{$e/lname}</e>
/
私はこれが1未満の従業員しか返さないと予想しています。したがって、例のデータが与えられると、それはJames Borg
だけを返します。しかし、それは皆を返します。どうしてこれなの?
編集:Oracle 11gでは、SQL Plusでxqueryコマンドを使用しています。
<companyDB xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="company.xsd">
<departments>...</departments>
<employees>
<employee ssn="333445555" worksFor="5" supervisor="888665555" manages="5">
<fname>Franklin</fname>
<minit>T</minit>
<lname>Wong</lname>
<dob>08-DEC-45</dob>
<address>638 Voss, Houston, TX</address>
<sex>M</sex>
<salary>40000</salary>
<dependents>
<dependent>...</dependent>
<dependent>...</dependent>
<dependent>...</dependent>
</dependents>
<supervisees essns="123456789 666884444 453453453"/>
<projects>...</projects>
</employee>
<employee ssn="888665555" worksFor="1" manages="1">
<fname>James</fname>
<minit>E</minit>
<lname>Borg</lname>
<dob>10-NOV-27</dob>
<address>450 Stone, Houston, TX</address>
<sex>M</sex>
<salary>55000</salary>
<supervisees essns="333445555 987654321"/>
<projects>...</projects>
</employee>
</employees>
</companyDB>
私はこれを試してみました、それが動作しませんでした、なぜですか? doc()がドキュメント{}を返すので、$ xml:= doc( "/ public/book/company.xml") return $ xml/employees/employee [非依存(依存/依存)] ' – mnky9800n
$ xml/companyDB/employees/employeeのようなxpath、probのようなものを修正してください。[not(dependents/dependent)] –