【问题标题】:What will happen if I natural join both these tables?如果我自然加入这两个表会发生什么?
【发布时间】:2012-12-15 19:19:10
【问题描述】:
我有两张桌子。员工和经理。员工表存储公司所有员工的信息。经理表显示哪些员工在哪个经理手下工作。经理也是该公司的雇员。下表给出。
员工(姓名、城市、街道)
经理(姓名,员工姓名)
粗体表示它们是主键。现在的问题是,在经理表中,姓名和员工姓名都是引用员工的外键。那么如果我自然地加入他们会发生什么。不会有什么问题吗?自然加入他们之后,我会在决赛桌看到谁的城市和街道?经理的还是员工的?
【问题讨论】:
标签:
mysql
sql
database
natural-join
【解决方案1】:
如果你很幸运,你很可能一无所有,如果你不走运,你很可能会一事无成。 Natural join 会做这样的事情:
SELECT * FROM managers LEFT JOIN employees
WHERE managers.name = employees.name
Natural join 尝试使用常用列。
当我假设你想要更多这样的东西时:
SELECT * FROM managers LEFT JOIN employees
WHERE managers.employee_name = employees.name
【解决方案2】:
您将获得所有经理城市、街道和员工姓名的列表
姓名、城市、街道、员工姓名
【解决方案3】:
否则加入的东西,我建议审查你的数据库的架构。
如果在 manager 表中,名称是 PK,则同一经理不能有超过一名员工..