Java教程

[SQL] 有中间件的两个表该怎么连接

本文主要是介绍[SQL] 有中间件的两个表该怎么连接,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目有三个表:

【部门的信息】departments: dept_no, dept_name
【部门员工所属】dept_emp: emp_no, dept_no,…
【员工的信息】employees: emp_no, first_name, last_name,…
题目要求:
列出所有的员工的信息和部门,如果没有部门,则列出NULL。

其中员工信息表和部门信息表由中间件连接,所以需要通过中间件来将两个表连起来。
具体方法是通过:
方法一:将中间件和部门表inner join as new_table, 然后将员工信息表和生成的新表左连接。(为什么是左连接?因为需要的信息中,无论员工是否拥有部门的相关信息,都会被列出来,所以保留员工信息rows,舍弃没有用的部门信息rows。

SELECT last_name, first_name, dept_name
FROM employees LEFT JOIN 
(SELECT emp_no, dept_name FROM departments INNER JOIN dept_emp ON departments.dept_no=dept_emp.dept_no)
AS new
ON new.emp_no= employees.emp_no; 

方法二:
两次左连接:
员工信息表和中间件左连接,然后新生成的表和部门信息表左连接。

SELECT last_name, first_name, dept_name
FROM 
(((SELECT emp_no, first_name, last_name FROM employees) as b LEFT JOIN 
dept_emp ON b.emp_no=dept_emp.emp_no) AS a
LEFT JOIN 
departments
ON a.dept_no=departments.dept_no)
;
这篇关于[SQL] 有中间件的两个表该怎么连接的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!