2017-03-17 59 views
0

enter image description here我不知道如何列出雇员的名字,姓氏,ssn,以及依赖者的名字和关系,如果一个依赖者存在。我需要使用显式连接来列出所有有家属的员工,包括没有家属的员工。使用MySQL和公司架构

架构名称:公司

表名:员工

列名:FNAME,MINIT,LNAME,SSN,bdate,地址,性别,工资,superssn,DNO

表名:从属

列名称:essn,dependent_name,sex,bdate,relationship

表名: dept_locations;

列名:dnumber,dlocation

表名:部门

列名:dnumber,DNAME,mgrssn,mgrstartdate

表名:项目

列名:pname,pnumber,plocation,dnum

表名: works_on

列名:ESSN,PNO,小时

这是我有什么,但它不工作...所以任何建议将是巨大的感谢!

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

你为什么要比较雇员和受抚养人的生日? – Barmar

+0

除了'employee'和'dependent'这两个表之外,哪些表格与这个问题有关? – Barmar

+0

我不确定要比较什么来得到这个结果集。我是新来的sql。我应该比较什么? – tadashi

回答

0

您的查询查找具有与受抚养人相同出生日期的雇员。这只是一个偶然的巧合,并不意味着它们有任何关系。

您应该根据员工的SSN加入表格。我假设dependent中的essn列是他们所依赖的员工的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 
0

巴尔马建议的东西非常正确......只是缺少一件事。 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;