使用MySQL和公司架构

时间:2017-03-17 20:09:39

标签: mysql mysql-workbench

enter image description here如果存在依赖关系,我无法弄清楚如何列出员工的名字,姓氏,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;

2 个答案:

答案 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;