我正在尝试为大学做作业,但我无法围绕内部联接,我尝试了谷歌搜索教程,但没有什么是坚持我。我基本上要做的是显示美国所有员工的姓名,薪水和部门名称。
我知道我必须显示departments.department_name,employees.First / Last_name,employees.salary。 但我不知道如何写它
e.department_id = d.department_id
d.location_id = l.location_id
l.country_id = c.country.id
where c.country.id = 'united states of america'
和
以某种方式找到部门名称并输出它。
答案 0 :(得分:0)
正如评论中所述,您找到了解决问题的方法,但您的查询是将一些旧学校语法(强烈建议不使用它)与显式关节混合使用,而您几乎使用了别名但却错过了它。
以下是没有无用代码的相同查询,您可以在下面找到一些解释:
SELECT E.FIRST_NAME
,E.LAST_NAME
,E.SALARY
,D.DEPARTMENT_NAME
,L.Street_Address
FROM Employees E
INNER JOIN Departments D ON D.DEPARTMENT_ID = E.DEPARTMENT_ID
INNER JOIN Locations L ON L.Location_id = D.LOCATION_ID
INNER JOIN Countries C ON C.Country_ID = L.Country_ID
AND C.Country_Name = 'united states of america'
在此查询中,我使用别名以简化可读性。表格Employees
的别名为E
,表格Departments
的别名为D
,...
如果你有明确的联合(... JOIN TableName ON ...
),你不需要在FROM
子句中声明这些表(这个以逗号分隔的表示法已经过时,你需要避免它。) / p>
关于我的查询的最后一个细节是,我使用表格WHERE
直接在关节条件下移动了Countries
条件。这不是必需的,但通过这样做,条件在与此表的联合期间应用,而不是应用于查询的整个结果(在这种情况下,性能可能不会引人注意,但请记住这一点。)< / p>
希望这有助于您更好地了解自己所做的事情。