0

这似乎是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
4

5 回答 5

2

使用内部连接引用 PK是多余的。

您通常会加入同一个表以链接另一条记录,例如,如果您有一个引用员工老板的 FK 列。

Boss_ID假设您在表中有一个可为空的外键列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

请注意,我使用 LEFT OUTER JOIN 来获取没有老板的员工。

于 2012-05-08T08:03:55.533 回答
0

我能看到什么。您不需要此连接。

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

这两个查询将给出相同的结果。我在桌子上看不到JOIN两次ing的点。Employee

于 2012-05-08T07:58:09.143 回答
0

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

于 2012-05-08T08:00:44.163 回答
0

如果 employee_id是PK,那么它没有意义,但如果不是,这两个查询将返回不同的结果。

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

于 2012-05-08T08:02:18.700 回答
0

更简单的是:

select e.employee_ID, d.dep_name from employee e,Departement d where d.dep_id= e.departement_id

于 2012-05-08T08:05:02.760 回答