我有两张桌子。员工和经理。员工表存储公司所有员工的信息。经理表显示哪些员工在哪个经理手下工作。经理也是该公司的雇员。下表给出。
员工(姓名,城市,街道)
经理(姓名,员工姓名)
粗体表示它们是主键。现在的问题是,在经理表中,姓名和员工姓名都是引用员工的外键。那么如果我自然地加入他们会发生什么。不会有什么问题吗?自然加入他们之后,我会在决赛桌看到谁的城市和街道?经理的还是员工的?
我有两张桌子。员工和经理。员工表存储公司所有员工的信息。经理表显示哪些员工在哪个经理手下工作。经理也是该公司的雇员。下表给出。
员工(姓名,城市,街道)
经理(姓名,员工姓名)
粗体表示它们是主键。现在的问题是,在经理表中,姓名和员工姓名都是引用员工的外键。那么如果我自然地加入他们会发生什么。不会有什么问题吗?自然加入他们之后,我会在决赛桌看到谁的城市和街道?经理的还是员工的?
如果你很幸运,你很可能一无所有,如果你不走运,你很可能一无所有。Natural join
会做这样的事情:
SELECT * FROM managers LEFT JOIN employees
WHERE managers.name = employees.name
Natural join
尝试使用COMMONLY NAMED COLUMNS。
当我假设你想要更像这样的东西时:
SELECT * FROM managers LEFT JOIN employees
WHERE managers.employee_name = employees.name
您将获得所有经理城市、街道和员工姓名的列表
姓名、城市、街道、Employee_Name
否则加入的东西,我建议审查你的数据库的架构。如果在经理表中,名称是 PK,则同一经理不能有超过一名员工。