2014-05-12 21 views
0

如果我有兩個表job,employee。 我需要從作業中選擇所有,併爲每項作業添加員工數量。從多個表中選擇mysql的次數

認爲結果

job table 
+-------------+-------------+ 
| id   | name  | 
+-------------+-------------+ 
| 1   | Teacher  | 
+-------------+-------------+ 
| 2   | Engineer | 
+-------------+-------------+ 
| 3   | Programmer | 
+-------------+-------------+ 

employee table 
+-------------+-------------+-------------+ 
| id   | name  | job_id | 
+-------------+-------------+-------------+ 
| 1   | employee N |  1  | 
+-------------+-------------+-------------+ 
| 2   | employee N |  2  | 
+-------------+-------------+-------------+ 
| 3   | employee N |  3  | 
+-------------+-------------+-------------+ 
| 4   | employee N |  1  | 
+-------------+-------------+-------------+ 
| 5   | employee N |  3  | 
+-------------+-------------+-------------+ 
| 6   | employee N |  1  | 
+-------------+-------------+-------------+ 

我需要從作業的所有選擇和追加的員工數爲每個作業。

認爲結果

Result table 
+-------------+-------------+--------------+ 
| id   | name  |employee count| 
+-------------+-------------+--------------+ 
| 1   | Teacher  |  3  | 
+-------------+-------------+--------------+ 
| 2   | Engineer |  1  | 
+-------------+-------------+--------------+ 
| 3   | Programmer |  2  | 
+-------------+-------------+--------------+ 

回答

2

我喜歡使用左側加入:)

SELECT job.id, job.name, count(*) AS 'employee count' 
FROM job 
LEFT JOIN employee 
ON job.id = employee.job_id 
GROUP BY job.id 
1

你想用INNER JOIN聯接表,然後GROUP BY到組的作業ID。最後用COUNT()獲得各組的計數

SELECT job.id, job.name, count(*) AS employee_count 
FROM job 
INNER JOIN employee 
    ON job.id = employee.job_id 
GROUP BY job.id 

你可以看到它住在這裏http://sqlfiddle.com/#!2/9d59c1/1