簡體   English   中英

使用xquery查找沒有家屬的員工

[英]using xquery to find employees with no dependents

我正在嘗試使用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命令。

以下是xml文件的示例:

<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>

一個簡單的XPath表達式產生所需的串聯名稱序列:

doc("/public/book/company.xml")
       /*/employees/employee[not(dependents/dependent)]
                       /concat(fname, lname)
let $xml := <companyDB>
    <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>

return
$xml/employees/employee[not(dependents/dependent)]

使用謂詞可以更容易(也更快)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM