当前位置: 首页 > 面试题库 >

何时使用左外部联接?

姚臻
2023-03-14
问题内容

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

问题3(b)

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

问题3(c)-

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

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


问题答案:

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

在您的示例中,您可以组合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字段将为空。



 类似资料:
  • 问题内容: 我有一个网站,用户可以在其中查看电影列表,并为其创建评论。 用户应该能够看到所有电影的列表。此外,如果他们查看了电影,则他们应该能够看到他们给它的评分。如果不是,则仅显示没有得分的电影。 他们根本不在乎其他用户提供的分数。 考虑以下 我本质上想要的是 考虑以下内容: 两个测试都应打印完全相同的输出,但是,只有原始版本会吐出正确的结果表: orm会返回这个 任何试图加入其余主题的尝试,那

  • 问题内容: 我有一个用例,其中我从某个模型中获得了符号化的深层关联,并且我必须执行某些涉及使用外部联接的查询。没有手工编写完整的SQL怎么办? 我不想要的答案:-使用include(无法很好地解决深层关联(.includes(:cars => [:windows,:engine => [:ignition] .....出乎意料的工作))而我却没有不想产生副作用)-自己编写SQL(对不起,这是201

  • 为什么我不能在SELECT部分执行NULL测试?有办法解决这个问题吗?

  • 问题内容: 很容易理解为什么左外部联接不是可交换的,但是我很难理解它们是否是可交换的。几家在线资源表明不是,但我还没有说服自己就是这种情况。 假设我们有三个表:A,B和C。 令A包含ID和B_ID两列,其中ID是表A的主键,B_ID是与表B的主键相对应的外键。 令B包含两列ID和C_ID,其中ID是表B的主键,C_ID是与表C的主键相对应的外键。 让C包含ID和VALUE两列,其中ID是表C的主键

  • 我正在尝试JPA2.1(eclipselink)中的“treat as”函数,但遇到了一个来自JPA的错误: 异常说明:ReportQuery结果大小不匹配。应为[263],但已检索到[197] 下面是我的JPQL查询(我更改了一些部分,以便更明确): 我们可以看到account和ad_account之间的左外部连接。此外,ad_account表不存在于select子句中。(idApp字段是主键的