【发布时间】:2017-11-16 14:06:04
【问题描述】:
我有一张表格,里面有一家公司的电话号码。 我的问题是,员工的每个号码我们都有一行,所以如果他有一个主电话和一个手机,我们就有两行他。
现在我需要显示所有员工的列表,包括他们的电话号码和手机号码(如果有的话)和电子邮件,但电子邮件在另一个表中。 我正在使用 SQL。
一个例子:
电话表
ID | EmpID | FullName | Number | Type |
----------------------------------------------------------------
115 | 02 | ManuelSan | +34935556663 | Fix |
116 | 02 | ManuelSan | +34652315453 | Mobile |
117 | 06 | Camillete | +34934445621 | Fix |
118 | 07 | MarcusEsq | +34932547841 | Fix |
119 | 08 | FionaYem | +34965214785 | Fix |
120 | 08 | FionaYem | +34652132124 | Mobile |
电子邮件表
ID | empID | Fullname | Email |
-----------------------------------------------------------------
25 | 02 | ManuelSan | Manuelsan@gg.com |
26 | 06 | Camillete | Camillete@gg.com |
27 | 07 | MarcusEsq | MarcusEsq@gg.com |
28 | 08 | FionaYem | FionaYem@gg.com |
所以我想要这个输出
Fullname | Fix | Mobile | Email
------------------------------------------------------------------
ManuelSan | +34935556663 | +34652315453 | Manuelsan@gg.com
Camillete | +34934445621 | NULL | Camillete@gg.com
MarcusEsq | +34932547841 | NULL | MarcusEsq@gg.com
FionaYem | +34965214785 | +34652132124 | FionaYem@gg.com
但我正在这样做:
SELECT distinct telf.Fullname, telf.Number, acti.EMAIL
FROM PhoneTable telf
left outer join EmailTable as acti on acti.empID = telf.empID
我知道我需要做其他事情,但我不知道是什么。如果他有电话和手机,我会为每位员工分两排。
我该怎么做?
问候,
【问题讨论】:
-
为什么所有电子邮件条目都具有相同的 ID?为什么要将员工姓名存储在两个表中?你没有员工表吗?一个员工可以有多个电子邮件吗?每个员工可以有多个修复号码吗?每个员工可以有多个手机号码吗?如果我发现同一个员工 ID 有不同的员工姓名怎么办?表的唯一键是什么?
-
每个员工都至少有一部手机吗?每位员工是否至少有一个电子邮件地址?
-
抱歉emailTable上的ID相同,刚刚改了。不,电话可以为空,但电子邮件地址是强制性的。
-
这并不能回答所有问题。那么电子邮件表实际上是员工表吗?每个员工只有一封电子邮件?每个员工可以有一个或零个固定电话号码和一个或零个手机号码?