这似乎是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
答案 0 :(得分: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来获得没有老板的员工。
答案 1 :(得分:0)
我能看到的。你不需要这个联接。
Inner join Employee E1 on e.employee_id= e1.Employee_ID
这两个查询将给出相同的结果。我无法在JOIN
表格上看到Employee
两次。
答案 2 :(得分:0)
在此查询中,我看不到有任何理由将Employee加入Employee。在过去,我偶尔会在同一个查询中使用同一个表的两个子集,但这里没有类似的内容。对我而言,这看起来是错误的。
答案 3 :(得分:0)
如果 employee_id 是PK,那么它没有意义,但如果不是,则两个查询将返回不同的结果。
第一个查询不会返回NULL employee_id,并且会返回N次出现的多个条目的 N ^ 2 结果。
答案 4 :(得分:0)
更简单的是:
从员工e,部门d中选择e.employee_ID,d.dep_name,其中d.dep_id = e.departement_id