我有一個數據庫與內計數操作加入
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
返回符合指定條件的行數後,我認爲這將是使用的正確操作。
看看GROUP BY ..擁有COUNT(*)=所有項目 – Mihai
請參閱http://meta.stackoverflow.com/questions/333952/why-should-i -provide-an-mcve-for-what-seems-to-the-very-simple-sql-query – Strawberry
數據庫中沒有'num_projects'列 –