使用MySQL和公司模式
我不知道如何列出员工的名字、姓氏、ssn以及家属的姓名和关系(如果家属存在)。我需要使用explicit join列出所有有家属的员工,包括没有家属的员工 架构名称:公司 表名:员工 列名:fname、minit、lname、ssn、bdate、地址、性别、薪水、supersn、dno 表名:相关 列名:essn、从属名称、性别、日期、关系 表名:部门位置 列名:dnumber,dlocation 表名:部门 列名:dnumber、dname、mgrssn、mgrstartdate 表名:项目 列名:pname、pnumber、plocation、dnum 表名:适用于 列名:essn、pno、小时 这是我所拥有的,但它不起作用…所以任何建议都会很好,谢谢使用MySQL和公司模式,mysql,mysql-workbench,Mysql,Mysql Workbench,我不知道如何列出员工的名字、姓氏、ssn以及家属的姓名和关系(如果家属存在)。我需要使用explicit join列出所有有家属的员工,包括没有家属的员工 架构名称:公司 表名:员工 列名:fname、minit、lname、ssn、bdate、地址、性别、薪水、supersn、dno 表名:相关 列名:essn、从属名称、性别、日期、关系 表名:部门位置 列名:dnumber,dlocation 表名:部门 列名:dnumber、dname、mgrssn、mgrstartdate 表名:项目
SELECT a.fname, a.lname, a.ssn, b.dependent_name, b.relationship
FROM `employee` a
inner JOIN `dependent` b
WHERE a.bdate=b.bdate;
您的查询将查找与受抚养人生日相同的员工。这只是一个偶然的巧合,并不意味着他们有任何关系 您应该根据员工的SSN加入表。我假设
dependent
中的essn
列是他们所依赖的员工的SSN
此外,连接条件应该放在ON
子句中,而不是WHERE
(尽管MySQL不强制执行)
巴尔马的建议非常正确……只是遗漏了一件事。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;
为什么要比较员工和家属的出生日期?除了
employee
和dependent
之外,其他表格与这个问题有什么关系?我不确定要比较什么才能得到这个问题的结果集。我是sql的新手。我应该比较什么?你没有看到我发布的答案吗?SQL的新功能与此有什么关系?这只是对数据如何关联的逻辑思考。
select a.fname, a.lname, a.ssn, b.dependent_name, b.relationship
from employee a
left join dependent b
on b.essn = a.ssn;