2017-10-11 55 views
0

我正在嘗試編寫一個mySQL語句,用於從一個表中選擇數據,但計算來自另一個表中具有匹配ID的條目的特定字段中的條目。mySQL JOIN語句與COUNT不正確匹配

這兩個表格是jobsjob_cards。一份工作將始終是一張單獨的條目,其中包含多張工作卡片,所以我需要編寫一份單據,從工作表格中選擇數據,但在結果中添加另一個字段,這是所有相關工作卡片的計數。

實施例:

jobs表:

| ID | customer | status | date_added | 
|----------------------------------------| 
| 1 |  3  | active | 2017-10-10 | 
------------------------------------------ 

job_cards表是有點更復雜,但它包括一個稱爲job_id柱將在這種情況下是1。但讓我們說有3張牌分配給上述工作。我寫了下面的語句:

SELECT j.*, COUNT(jc.id) AS card_count FROM jobs j LEFT JOIN job_cards jc ON j.id = jc.job_id 

但數列只返回牌總數的job_cards表,不管他們被分配到工作。不僅如此,即使此時jobs表中有4個條目,它也只返回單個結果。

有沒有辦法做我需要做的一個單一的陳述?

編輯:從job_cards表

的樣本數據:

| ID | job_id | customer | description | materials | notes | 
|--------------------------------------------------------------| 
| 1 |  1 |  3 | blah blah | none  | test | 
| 2 |  1 |  3 | something | pipes | n/a | 
---------------------------------------------------------------- 

我希望得到的結果是:

| ID | customer | date_added | card_count | 
|-------------------------------------------| 
| 1 |  3 | 2017-10-10 |  2  | 
--------------------------------------------- 

如果這裏的ID是的ID工作。

+0

使用不同的** COUNT(不同jc.id)** –

+0

。請張貼更多樣本數據和預期結果。這會幫助我們很多。 –

回答

1

你可以試試這個:你已經by子句無緣小組

SELECT *, (select count(*) 
      from job_cards jc 
      where jc.job_id=j.id) as card_count 
FROM jobs j 
+0

所以請接受答案 – nacho