sql中的内部联接返回相同的公开名称错误

sql中的内部联接返回相同的公开名称错误,sql,inner-join,Sql,Inner Join,我正试图为大学做一个作业,但我不能把我的头放在内心的连接上,我尝试过用谷歌搜索教程,但没有什么是适合我的。我基本上要做的是显示美国所有员工的姓名、薪水和部门名称 我知道我必须显示departments.department\u name,employees.First/Last\u name,employees.salary。 但是我不知道怎么写 e.department_id = d.department_id d.location_id = l.location_id l.country_i

我正试图为大学做一个作业,但我不能把我的头放在内心的连接上,我尝试过用谷歌搜索教程,但没有什么是适合我的。我基本上要做的是显示美国所有员工的姓名、薪水和部门名称

我知道我必须显示departments.department\u name,employees.First/Last\u 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'

以某种方式找到部门名称并将其输出


以下是我的表

如评论中所述,您找到了解决问题的方法,但您的查询将一些老式语法(强烈建议不要使用)与显式连接混合在一起,您几乎使用了别名,但没有找到

这里是没有无用代码的相同查询,您将在下面找到一些解释:

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
子句中声明这些表(这种逗号分隔的表示法已过时,需要避免)

关于我的查询的最后一个细节是,我将您的
WHERE
条件直接移动到与表
Countries
的连接条件中。这不是必需的,但通过这样做,条件将在与该表的连接期间应用,而不是应用于整个查询结果(在这种情况下,性能可能不会明显,但请记住这一点)


希望这能帮助你更好地理解你所做的事情。

好吧,我不能给出答案,因为我会为你做家庭作业。请允许我将其分解一下:您希望使用内部联接查找员工和位置(它们的交点),然后需要外部联接将部门链接到结果,以便能够传递部门名称。试着分两步思考,就像那样。运行第一个部件,然后添加第二个部件。@GreyDog好的,我将报告结果。谢谢你的回答,我想学习如何为将来做这件事。祝你好运。盯着这个看一个小时。这是黄金@GreyDog我每次都被困在这里,我不知道问题出在哪里@GreyDog:谁说学校的孩子们不再需要知道维恩图了。