2017-02-11 37 views
0

我最近一直在學習MySQL和想知道如果有人可以幫助我解決這個問題我的工作..MySQL的高級加入

我有兩個表,

首先是departmentTable

+------------+-----------+-----------+-----------+-----------+-----------+-----------+ 
| Department | Employee1 | Employee2 | Employee3 | Employee4 | Employee5 | Employee6 | 
+------------+-----------+-----------+-----------+-----------+-----------+-----------+ 
| Finance | Tim C  | Nora C | Susan P | Martin S | Donal D | Zita P | 
| HR   | Yvonne S | Marcus F | Mark B | Peter S | Ola G  | Gina P | 
| IT   | John W | Matt R | Paul M | Tom Y  | Jean S | Martin T | 
+------------+-----------+-----------+-----------+-----------+-----------+-----------+ 

二是employeeDetails表

+--------------+-------+------------+--------+ 
| EmployeeName | Shift | Employment | Salary | 
+--------------+-------+------------+--------+ 
| Donal D  | Night | Full  | 30000 | 
| Gina P  | Night | Part  | 21000 | 
| Jean S  | Night | Full  | 30000 | 
| John W  | Night | Full  | 24000 | 
| Marcus F  | Night | Full  | 21000 | 
| Mark B  | Day | Full  | 23000 | 
| Martin S  | Day | Full  | 23400 | 
| Martin T  | Day | Part  | 31000 | 
| Matt R  | Day | Full  | 22000 | 
| Nora C  | Day | Full  | 22000 | 
| Ola G  | Night | Full  | 21400 | 
| Paul M  | Day | Part  | 23000 | 
| Peter S  | Day | Part  | 25000 | 
| Susan P  | Day | Part  | 23000 | 
| Tim C  | Day | Full  | 24000 | 
| Tom Y  | Day | Full  | 23400 | 
| Yvonne S  | Day | Full  | 24000 | 
| Zita P  | Night | Part  | 31000 | 
+--------------+-------+------------+--------+ 

我試圖找到一種方法如果有可能查詢哪個部門有4天和2夜班員工。所以它應該輸出是這樣的..

+------------+-----------+-----------+-----------+-----------+-----------+-----------+ 
| Department | Employee1 | Employee2 | Employee3 | Employee4 | Employee5 | Employee6 | 
+------------+-----------+-----------+-----------+-----------+-----------+-----------+ 
| Finance | Tim C  | Nora C | Susan P | Martin S | Donal D | Zita P | 
| IT   | John W | Matt R | Paul M | Tom Y  | Jean S | Martin T | 
+------------+-----------+-----------+-----------+-----------+-----------+-----------+ 

任何幫助表示讚賞,我知道這是不是存儲數據並獲取他們最好的方式,但我想了解和學習更多關於MySQL的加入和計數。

+3

修正你的表結構。將員工存儲在一列中 – GurV

+0

我正在介紹一些建議上述數據結構的培訓材料。所以我只是試圖瞭解它是否可能 – tom1123

+0

請在寫入預先查詢之前先對數據庫進行規範化。否則它會浪費你的時間和才華。 – Imran

回答

0

你應該通過在一列中存儲員工來修復你的表結構。

雖這麼說,你可以試試這個:

select 
    d.* 
from departmentTable d 
join employeeDetails e on e.EmployeeName in (
    d.Employee1, d.Employee2, d.Employee3, 
    d.Employee4, d.Employee5, d.Employee6 
) 
group by d.department 
having sum(e.shift = 'Night') = 2 
and sum(e.shift = 'Day') = 4 
+0

這工作像一個魅力..非常感謝您的幫助,我正在做的在線課程在將數據庫標準化之前將重點放在這些高級查詢上..但是非常感謝您的幫助 – tom1123

0

您應該使用一張表格,您可以在其中存儲所有員工的詳細信息並在其中添加引用某個部門的詳細信息。不要在employee1-n中使用你的方法。

另外,當我看到Nora C出現在兩個部門時,可能會看看m-n關係。 Google是你的朋友

+0

所以看起來像是複製和粘貼錯字..它應該是馬庫斯F ..有點卡住了,所以我決定問..我仍然會在這個芯片上擦掉..謝謝 – tom1123