小编典典

何时使用左外部联接?

mysql

我不了解左外部联接,右外部联接的概念,或者根本不理解为什么我们需要使用联接!我正在努力解决的问题以及正在处理的表格在这里:链接

问题3(b)

在SQL中构造命令以解决以下查询,解释了为什么必须使用(外部)联接方法。[5分]“找到每名工作人员及其his属(如果有)的姓名”

问题3(c)-

使用(i)join方法和(ii)子查询方法在SQL中构造命令以解决以下查询。[10分]“查找在计算机化项目上工作超过20小时的每位工作人员的身份名称”

谁能简单地向我解释一下?


阅读 439

收藏
2020-05-17

共1个答案

小编典典

联接用于将两个相关的表组合在一起。

在您的示例中,您可以组合Employee表和Department表,如下所示:

SELECT FNAME, LNAME, DNAME
FROM
EMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.DNO=DEPARTMENT.DNUMBER

这将导致一个记录集,如:

FNAME   LNAME   DNAME
-----   -----   -----
John    Smith   Research
John    Doe     Administration

我用INNER JOIN上面的。INNER JOINs将两个表组合在一起,以便 显示两个表中具有匹配项的记录,并且在这种情况下,将它们
连接 到部门编号(Employee中的字段DNO,Department表中的DNUMBER)。

LEFT JOIN使用s可以在第一个表中有记录但第二个表中 没有 记录时合并两个表。例如,假设您要列出所有雇员以及所有受抚养者的列表:

SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_last, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE INNER JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN

这里的问题是,如果员工 没有 受抚养人,那么他们的记录将根本不会显示-因为DEPENDENT表中没有匹配的记录。

因此,使用 连接将所有数据保留在“左”(即第一个表)上,并将所有匹配的数据保留在“右”(第二个表)上:

SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_first, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE LEFT JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN

现在,我们获得了 所有 员工记录。如果给定员工没有匹配的受抚养人,则dependent_firstdependent_last字段将为空。

2020-05-17