我正在尝试加入这两个表格。我们打电话给一个员工,另一个员工信息:
Employees
Name Title ID
------- ------- ------
John Consultant 1
John Engineer 2
Jane Accountant 3
Employee Information
Name EmailAddress Project
------ ------------- ----------
John John@work.com Travelling
John John1@work.com Database Maintenance
我正在尝试加入表格,如下所示:
Desired Results
Name Title EmailAddress Project
------ ----- ------------- ----------
John Consultant John@work.com Travelling
John Engineer John1@work.com Database Maintenance
但我不断得到这样的东西:
Actual Results
Name Title EmailAddress Project
------ ----- ------------- ----------
John Consultant John@work.com Travelling
John Engineer John@work.com Database Maintenance
John Consultant John1@work.com Travelling
John Engineer John1@work.com Database Maintenance
我正在运行类似于此的查询:
SELECT * FROM Employees E INNER JOIN
EmployeeInformation EI ON E.Name = EI.Name
看着它,我可以理解为什么行数加倍,但我似乎无法找到获得所需输出的方法,任何建议?或者,由于我的过滤器太模糊,所以不可能吗?
答案 0 :(得分:0)
您正在加入非唯一字段,这意味着它将为每个E.Name =“John”/EI.Name =“John”组合返回一行。
要解决此问题,您需要查找或创建两个表之间具有1:1关系的字段。 (假设每个员工在您的EI表中只有一行。)
例如,您可以利用E.ID来匹配您的EI表吗?
如果数据结构合理,EI表上应该有一个外键字段,它与您的Employee表中的主键(应该是E.ID)相对应。
答案 1 :(得分:0)
Employeeinformation
表应具有employees
表的主键。
请更改您的表结构,尝试向Employee information
表添加一列,并从employees
表更新ID。
答案 2 :(得分:0)
你的例子告诉我:
John has three titles.
John has two email addresses.
There is no relations that tells us which email goes with which title.
这一事实基本上就是为什么你会看到你所看到的结果。您的数据显示两封电子邮件都附带所有标题。如果要将特定电子邮件地址分配给特定人员/标题组合,则需要更改架构。