我希望看到如何将一个查询的结果组合成另一个以TRC格式表示的查询。我将发布下面的问题和数据库的结构。
Retrieve the names of employees who make at least $10,000 more than the employee who is paid the least in the Company.
EMPLOYEE: fname , minit , lname, ssn , bdate , address , sex , salary , superssn , dno
DEPARTMENT: dname dnumber , mgrssn , mgrstartdate
DEPT_LOCATIONS: dnumber , dlocation
PROJECT: pname , pnumber , plocation , dnum
WORKS_ON: essn , pno , hours
DEPENDENT: essn , dependent_name , sex , bdate , relationship
到目前为止,我已经找到了如何从链接How would I find the highest/largest of something with relation algebra, domain relational calculus and tuple relational calculus和http://www.cs.princeton.edu/courses/archive/spr00/cs425/soln_from_text_midterm.pdf找到薪水最低的员工(第32页,问题6,7和8)都使用这个逻辑进一步回答)。
我的问题是,我很难获得最低员工的结果,然后再加10000。我相信其余的查询应该很简单。我有以下几个来生成最低工资的员工,但显然这不会使员工返回到此之上。
{e1.salary | EMPLOYEE(e1) and NOT (∃e2) (EMPLOYEE(e2) and (e2.salary<e1.salary) ) }
任何帮助将不胜感激。
非常感谢!
答案 0 :(得分:0)
我认为你可以直接在e2.salary + 10000&lt; e1.salary
答案 1 :(得分:0)
经过进一步审核,我认为以下内容将解决第二个问题...
{emp.fname, emp.minit, emp.lname | EMPLOYEE(emp) and (∃x) ( EMPLOYEE(x) and NOT (x.salary>emp.salary)) and x.dno=emp.dno)}
虽然我可能需要触摸它,但我认为它有基本的想法。从OOP的角度出发,将价值传递给链条肯定会有所消除。再次感谢!