下面是一个包含4个表的练习:https://www.w3resource.com/sql-exercises/joins-hr/sql-joins-hr-exercise-13.php
我正在尝试理解为什么要使用:
SELECT job_title, department_name, first_name || ' ' || last_name AS `enter code here`Employee_name, start_date
FROM job_history
JOIN jobs USING (job_id)
JOIN departments USING (department_id)
JOIN employees USING (employee_id)
WHERE start_date>='1993-01-01' AND start_date<='1997-08-31';
返回正确的值,同时使用
SELECT job_title, department_name, first_name || ' ' || last_name AS Employee_name, start_date
FROM job_history
JOIN jobs USING (job_id)
JOIN employees USING (employee_id)
JOIN departments USING (department_id)
WHERE start_date>='1993-01-01' AND start_date<='1997-08-31';
不返回任何内容(只是更改了联接顺序)
发布于 2019-05-24 03:35:44
但是,您使用的是using
子句。这可能会导致问题,因为在此之前,连接键的作用域仅限于表。
一种可能是至少有三个表具有department_id
:employees
、departments
和一个或两个jobs
表。
第一个查询是查找jobs表的department_id
,并要求它们相同。
第二个查询也在作用域中引入了employees.department_id
,并要求它与其他查询匹配。没有行的员工的部门与分配给他们的职务的部门相匹配。
https://stackoverflow.com/questions/56281832
复制相似问题