将结果传递给变量

时间:2015-04-01 05:45:46

标签: xquery

好吧,让我首先说我是XQuery的新手。我2天前才开始学习它。 现在我的任务涉及使用3个单独的xml文件,这些文件基本上包含了表格。

名为dependent.xml的第一个文件包含以下字段:essn,dependent_name,relationship。

名为employees.xml的第二个文件包含以下字段:fname,lname,ssn,dno

名为department.xml的第三个文件包含以下字段:dname,dnumber,mgrssn

因此,这些表之间的关系是:essn = ssn,ssn = mgrssn和dno = dnumber。

我需要返回所有家属的清单,以及相应的员工和这些员工的相应经理。这是我的代码到目前为止的样子:

{
    for $d in doc("../company/dependent.xml")//dependent,
        $e in doc("../company/employee.xml")//employee
    where $d/essn = $e/ssn
    return
      <dependent
      name="{ $d/dependent_name }"
      fname="{ $e/fname }" lname="{ $e/lname }"
      />
}

这给了我一份所有家属及其相应员工的清单,所以到目前为止一切都很顺利。

问题是经理也是员工,因此他们的名字在员工表中。因此,我需要将具有dependents的员工的dno与department表中的dnumber相匹配,以获得这些部门的mgrssn,然后将这些mgrssn与员工ssn匹配以获取经理姓名。

我的想法是将员工的dno与我的代码存储在变量中,然后使用该变量来获取这些部门的管理人员和使用它是这样的:

{
    for $d in doc("../company/department.xml")//department,
        $e in doc("../company/employee.xml")//employee
    where $d/mgrssn = $e/ssn and $d/dnumber = $**variable**
    return
      <manager
      fname="{ $e/fname }" lname="{ $e/lname }"
      />
}

问题是我不知道该怎么做,我意识到这将是一个单独的for循环。有没有办法可以在一个for循环中完成所有这些操作? 此外,如果有更简单的方法来做我需要的事情,那么我也可以接受建议:)

0 个答案:

没有答案