如何使用 LEFT JOIN 来连接没有公共列的表

问题描述 投票:0回答:1

我只是想知道如果其中两个表没有公共列,是否可以连接四个表?

我只需要显示列

empno, lastname, deptname, jobdesc, salary

这些是我想加入的桌子:

  • EMP
    表 ---> 员工编号、姓氏、名字
  • JOBHIST
    表 ---> 员工号、职位代码、工资、部门代码
  • JOB
    表--->职位代码,jobdesc
  • DEPT
    表--->部门代码,部门名称

这是我到目前为止所尝试过的。当我运行它时,它不显示部门名称、工作描述和薪水。我知道我的脚本是错误的,因为我

LEFT JOIN
DEPT
JOB
表到
JOBHIST
表。

即使

DEPT
JOB
表没有公共列,是否有办法加入它们?

SELECT 
    em.empno, em.lastname, d.deptname, j.jobdesc, jh.salary
FROM 
    EMP em
LEFT JOIN 
    JOBHIST jh ON em.empno = jh.empno
LEFT JOIN 
    DEPT d ON jh.deptcode = d.deptcode
LEFT JOIN 
    JOB j ON jh.jobcode = j.jobcode
ORDER BY 
    empno;
sql database join db2 left-join
1个回答
0
投票

是的,即使表没有公共列,也可以通过使用可能间接关联它们的其他列来连接表。您可以执行一系列 JOIN 操作来连接它们。例如,如果有表A、表B、表C和表D,并且只有表A和表B有公共列,则可以先连接A和B,然后将结果集与表C连接,最后将该结果与表 D 结合起来。

假设您要显示这四个表中的 empno、lastname、deptname、jobdesc 和 salal。下面是一个使用 SQL 语法的示例来说明这个概念:

SELECT A.empno, A.lastname, C.deptname, D.jobdesc, D.salary
FROM TableA A
JOIN TableB B ON A.common_column = B.common_column
JOIN TableC C ON B.another_column = C.another_column
JOIN TableD D ON C.yet_another_column = D.yet_another_column;
© www.soinside.com 2019 - 2024. All rights reserved.