2014-07-03 42 views
1

我試圖做MySQL中的SELECT查詢也將做另一個表中的countjoin答案進入我的初始tableMySQL的內部從另一個表

people

ID加入計數|名稱| hair_color | job_id

job

id | JOB_NAME

SELECT * 
FROM job j 
INNER JOIN (SELECT COUNT(job_id) AS totals 
      FROM people p 
      WHERE p.job_id='1') 
    ON j.count = totals 
WHERE id = '1' 
ORDER BY id ASC 

所以我試圖讓上面的查詢從我job表由id選擇,也不要在peoplecount和列count添加到我job結果。

回答

4

您不必在子查詢中進行計數:您可以直接選擇計數,然後按組合。此外,您不必手動精確調整 job_id:在兩個表格字段(最小)之間直接進行JOIN。

SELECT j.id, j.job_name, count(p.id) as nb_people 
    FROM job j 
     INNER JOIN people p ON p.job_id = j.id 
WHERE j.id = '1' 
GROUP BY j.id, j.job_name 
ORDER BY id ASC 

看一看MySQL的聚合函數文檔:http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html

也許再看看上JOIN文檔:http://dev.mysql.com/doc/refman/5.7/en/join.html

+0

Upvoted,但我會讓它'COUNT(DISTINCT p.id)'以防萬一:) –

+0

我個人更喜歡'COUNT(1)',但你說得對,初學者更清楚。我編輯我的答案,謝謝。 – OlivierH

+0

@OlivierH括號內的'1'代表什麼? – ngplayground