2017-03-06 53 views
0

我有一個數據庫與內計數操作加入

Employee 
+----------+-------+-----------+-----------+------+-----------+ 
| Fname | Minit | Lname | Emp_ID | Sex | Dept_num | 
+----------+-------+-----------+-----------+------+-----------+ 
| John  | S  | Doe  | 123456789 | M |   5 | 
| Susan | R  | Smith  | 333445555 | F |   5 | 
| Bob  | A  | Parker | 999887777 | M |   3 | 
| Franklin | T  | Johnson | 987654321 | M |   4 | 
| Debbie | K  | Spencer | 666884444 | F |   3 | 
| Stephen | L  | English | 453453453 | M |   2 | 
| Mary  | T  | Moore  | 987987987 | F |   4 | 
| James | R  | Donaldson | 888665555 | M |   1 | 
+----------+-------+-----------+-----------+------+-----------+ 

Works_on 
+-----------+-----------+ 
| Emp_ID | Proj_num | 
+-----------+-----------+ 
| 123456789 |   1 | 
| 123456789 |   2 | 
| 666884444 |   3 | 
| 453453453 |   1 | 
| 453453453 |   2 | 
| 333445555 |   2 | 
| 333445555 |   3 | 
| 333445555 |  10 | 
| 333445555 |  20 | 
| 999887777 |  30 | 
| 999887777 |  10 | 
| 987987987 |  10 | 
| 987987987 |  30 | 
| 987654321 |  30 | 
| 987654321 |  20 | 
| 888665555 |  20 | 
+-----------+-----------+ 

我一直在做一些練習一些基本操作,以瞭解他們在MySQL做兩個表,但是,我被困在一個。假設我想知道所有在每個項目上工作的員工的姓名。他們的查詢應該返回一個空的結果,因爲沒有員工在項目1,2,3,10,20和30上工作。

我試圖做什麼來計算每個Emp_ID出現在work_on表中的次數。那會告訴我他們正在進行的項目的數量。爲此,我嘗試在Emp_ID上使用COUNTS方法。我試圖運行查詢是這樣的:

SELECT employee.Fname, employee.Minit, employee.Lname, 
COUNT(works_on.Emp_ID) AS Num_projects FROM works_on 
INNER JOIN employee 
ON works_on.emp_id=employee.emp_id 
WHERE num_projects=6; 

但我得到一個錯誤,因爲num_projects是在WHERE子句中的未知列。我是SQL新手,在w3schools.com等網站上閱讀過很多,其中很多例子都非常簡單易懂,但對於初學者來說,這樣做更復雜一些。

我的邏輯是,查詢將經過並計算每個Emp_ID出現在works_on中的次數。例如,ID 333445555在表中出現4次,所以員工333445555的工程數量爲4.我試圖讓它顯示每個員工工作的項目數量,然後從中選擇數量所有的工作,就像我所說的將是零。 COUNT方法是實現此目的的最佳方法,還是使用DISTINCT更合適?自從COUNT返回符合指定條件的行數後,我認爲這將是使用的正確操作。

+2

看看GROUP BY ..擁有COUNT(*)=所有項目 – Mihai

+0

請參閱http://meta.stackoverflow.com/questions/333952/why-should-i -provide-an-mcve-for-what-seems-to-the-very-simple-sql-query – Strawberry

+0

數據庫中沒有'num_projects'列 –

回答

-2

留意大小寫在MySQL:

您有:

SELECT employee.Fname, employee.Minit, employee.Lname, 
COUNT(works_on.Emp_ID) AS Num_projects 

然後:

WHERE num_projects=6; 

確保它的

WHERE Num_projects=6; 

如果你定義了你AS作爲Num_p roject,where子句必須完全參照Num_projects

+0

不,這不是解決方案。 – Shadow

+0

我不'沒有足夠的信譽來添加一個評論Shadow,我同意它更多的是這個,顯然這不是完整的解決方案,但是我想給出一些關於WHERE子句錯誤的反饋,這不是鼓勵嗎? – JDev518

+0

什麼寫道不是未知列錯誤的原因。請檢查出正確答案的重複鏈接。順便說一句,如果你的意思是作爲評論,那麼你應該避免發佈它作爲答案。不鼓勵發表評論作爲答案。 – Shadow