我有一張表格,裏面填寫了公司的電話號碼。 我的問題是,我們有一個僱員每一個號碼的行,所以如果他有一個主電話和一部手機,我們有他的兩行。SQL如何正確執行外部聯接
現在我需要顯示所有員工的電話號碼和手機號碼(如果有的話)和電子郵件列表,但電子郵件地址在另一個表格中。 即時通訊使用SQL。
一個例子:
PhoneTable
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 |
EmailTable
ID | empID | Fullname | Email |
-----------------------------------------------------------------
25 | 02 | ManuelSan | [email protected] |
26 | 06 | Camillete | [email protected] |
27 | 07 | MarcusEsq | [email protected] |
28 | 08 | FionaYem | [email protected] |
所以我想這個輸出
Fullname | Fix | Mobile | Email
------------------------------------------------------------------
ManuelSan | +34935556663 | +34652315453 | [email protected]
Camillete | +34934445621 | NULL | [email protected]
MarcusEsq | +34932547841 | NULL | [email protected]
FionaYem | +34965214785 | +34652132124 | [email protected]
但是我這樣做:
SELECT distinct telf.Fullname, telf.Number, acti.EMAIL
FROM PhoneTable telf
left outer join EmailTable as acti on acti.empID = telf.empID
我知道我需要做別的事情,但我不知道是什麼。如果他有一部手機和一部手機,我每個員工都會得到兩行。
我該怎麼做?
問候,
爲什麼所有的電子郵件條目都有相同的ID?爲什麼你將員工姓名存儲在兩個表中?你沒有僱員表嗎?一個員工可以有多個電子郵件嗎?每個員工可以有多個修理號碼?每個員工可以有多個手機號碼?如果我爲同一員工ID找到不同的員工姓名,該怎麼辦?什麼是表格唯一鍵? –
並且每個員工是否至少有一部手機?每個員工是否至少有一個電子郵件地址? –
對不起,關於電子郵件表上的同一個ID,只是改變了它。 而不是,電話可以爲空,但電子郵件地址是強制性的。 – Mueretee