好吧,让我首先说我是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循环中完成所有这些操作? 此外,如果有更简单的方法来做我需要的事情,那么我也可以接受建议:)