Sql 遇到了一种奇怪的编写查询的方法

Sql 遇到了一种奇怪的编写查询的方法,sql,Sql,这似乎是stackoverflow上有史以来最愚蠢的问题,但我只是想知道你为什么要写这样一个查询: Select e1.Emploee_ID, e1.Departement_ID From Employee e Inner join Employee E1 on e.employee_id= e1.Employee_ID Inner join Departement d on d.dep_id= e1.departement_id 为什么我们要加入到员工的行列?我明显的疑问是 select

这似乎是stackoverflow上有史以来最愚蠢的问题,但我只是想知道你为什么要写这样一个查询:

Select e1.Emploee_ID, e1.Departement_ID From Employee e 
Inner join Employee E1 on e.employee_id= e1.Employee_ID
Inner join Departement d on d.dep_id= e1.departement_id
为什么我们要加入到员工的行列?我明显的疑问是

select e.employee_ID, e.Departement_id from employee e 
inner join  Departement d on d.dep_id= e1.departement_id

我所能看到的。您不需要此连接

Inner join Employee E1 on e.employee_id= e1.Employee_ID

这两个查询将给出相同的结果。在
Employee
表中,我看不到两次加入
的意义。

我看不到在这个查询中加入Employee-to-Employee的任何理由。在过去,我偶尔在同一个查询中使用同一个表的两个子集,但这里没有类似的情况。在我看来,这似乎是错误的。

如果员工id是PK,那么它就没有意义,但如果不是,两个查询将返回不同的结果


第一个查询不会返回空的employee_id,并将返回出现N次的多个条目的N^2结果。

使用内部联接引用PK是多余的

通常,您会在同一个表上联接以链接到另一条记录,例如,如果您有一个引用员工上司的FK列

假设表
Employee

Select e.Employee_ID, boss.Employee_id, d.Departement_ID 
From Employee e  
LEFT OUTER JOIN Employee boss on boss.Employee_ID=e.Boss_ID
INNER JOIN Departement d on d.dep_id= e.departement_id

请注意,我使用了一个左外联接来获取没有老板的员工。

更简单的是:

从员工e、部门d中选择e.employee_ID、d.dep_名称,其中d.dep_ID=e.Department_ID


看了几眼之后,我所看到的只是代表原作者的一个可能的打字错误\大脑放屁:)谢谢,这也是我的观点,但我在我维护的应用程序中看到了这些类型的关节,显然不知道为什么它是这样写的,在这个应用程序中非常常见。我想我误解了这个问题Tim,谢谢,这听起来是最准确的解释