【问题标题】:What will happen if I natural join both these tables?如果我自然加入这两个表会发生什么?
【发布时间】:2012-12-15 19:19:10
【问题描述】:

我有两张桌子。员工和经理。员工表存储公司所有员工的信息。经理表显示哪些员工在哪个经理手下工作。经理也是该公司的雇员。下表给出。

员工(姓名、城市、街道)

经理(姓名,员工姓名)

粗体表示它们是主键。现在的问题是,在经理表中,姓名和员工姓名都是引用员工的外键。那么如果我自然地加入他们会发生什么。不会有什么问题吗?自然加入他们之后,我会在决赛桌看到谁的城市和街道?经理的还是员工的?

【问题讨论】:

  • 试试看,你会看到吗? SQLFiddle.com

标签: 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,则同一经理不能有超过一名员工..

      【讨论】:

        猜你喜欢
        • 2010-12-02
        • 1970-01-01
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多