【问题标题】:Only single foreign key is being acknowledge只有单个外键被确认
【发布时间】:2013-04-22 16:19:03
【问题描述】:

我有两个表,即manageremployee。我已经成功地在employee 表上实现了外键约束,并且一切似乎都运行良好。但是,每当我使用INNER JOIN 查询数据库以找出将哪个经理分配给哪个员工时,它给我的结果仅限于我拥有的经理ids 的数量。例如,如果将 2 名特定员工分配给同一位经理,则根据分配给同一位经理的员工列表,它只会给我一个结果。

我尝试使用LEFT JOIN 来查看我想要执行的外部元素是否实际插入。令我惊讶的是,它为我提供了NULL 的结果,这些列显式地具有与实际工作的那些外键相同的外键。如果您发现我的描述不清楚,请提前抱歉,因为英语不是我的母语。但是,为了让您更好地了解我试图解释我的表格的内容如下

employee                                              Manager
emploee ID | firstname | lastname | managerid         managerid |fname | lastname
1              john        doe       1                   1       gordon   soo
2              ian         lee       1                   2       justin   freeman
3              faye        eva       2                   3       sai      chow   

当我尝试LEFT JOIN时会发生什么:

Employee name |lasttname | ManagerNAme

john           doe            gordon
ian            lee            NUll

我已经尝试过WHERE 子句以及检查两个表是否都在 INODB 上并且具有相同的排序规则,但我似乎无法修复它。希望你能帮忙。

【问题讨论】:

  • 请出示您的查询

标签: mysql phpmyadmin foreign-keys


【解决方案1】:

据我了解,您需要一个简单的JOIN 在桌子上。由于您没有显示您的查询,因此很难说出了什么问题。这可能就是你想要的:

SELECT 
    e.firstname, e.lastname, m.fname
FROM
    Manager m    
    JOIN employee e ON e.managerid = m.managerid

【讨论】:

  • SELECT employee.firstname, manager.firstname, employee.lastname FROM employee INNER JOIN manager ON employee.id = manager.id
  • 什么是employee.id 和manager.id?你的表中没有这些。
  • 这正是我所做的,我很确定我的系统税是正确的,因为它没有给我任何错误。我的问题是我得到的结果仅限于我拥有的经理 ID 的数量。例如,如果两个员工有同一个经理,结果只显示一个,而后者返回 null,即使我已指定员工两个也分配给同一个经理
  • employee.id 对应于我的员工表主键,而 manager.id 对应于经理表中的主键
  • 好吧,那么employee.id = manager.id 是错误的,不是吗?应该是employee.managerid = manager.id
猜你喜欢
  • 2021-07-23
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 2011-01-04
  • 2010-11-20
  • 2014-08-08
相关资源
最近更新 更多