如果存在依赖关系,我无法弄清楚如何列出员工的名字,姓氏,ssn和依赖者的姓名和关系。我需要使用显式联接来列出所有有家属的员工,包括没有家属的员工。
架构名称:公司
表名:员工
列名:fname,minit,lname,ssn,bdate,address,sex,salary,superssn,dno
表名:依赖
列名:essn,dependent_name,sex,bdate,relationship
表名: dept_locations;
列名:dnumber,dlocation
表名:部门
列名:dnumber,dname,mgrssn,mgrstartdate
表名:项目
列名:pname,pnumber,plocation,dnum
表名: works_on
列名:essn,pno,hours
这就是我所拥有的,但它不起作用......所以任何建议都会非常感谢!
SELECT a.fname, a.lname, a.ssn, b.dependent_name, b.relationship
FROM `employee` a
inner JOIN `dependent` b
WHERE a.bdate=b.bdate;
答案 0 :(得分:0)
您的查询会查找与受抚养人具有相同生日的员工。这只是一个随机的巧合,并不意味着他们有任何关系。
您应该根据员工的SSN加入表格。我假设essn
中的dependent
列是他们所依赖的员工的SSN。
此外,连接条件应放在ON
子句中,而不是WHERE
(尽管MySQL不强制执行此操作)。
SELECT a.fname, a.lname, a.ssn, b.dependent_name, b.relationship
FROM employee AS a
JOIN dependent AS b ON b.essn = a.ssn
答案 1 :(得分:0)
Barmar建议的几乎是正确的......只是缺少一件事。 OP需要列出具有受抚养人的员工和没有受抚养人的员工,因此应使用左加入。
select a.fname, a.lname, a.ssn, b.dependent_name, b.relationship
from employee a
left join dependent b
on b.essn = a.ssn;