2017-10-11 10 views
0

あるテーブルからデータを選択するが、特定のフィールドに一致するIDを持つ別のテーブルのエントリをカウントするmySQL文を作成しようとしています。COUNTが正しく一致しないmySQL JOIN文

2つのテーブルは、jobsjob_cardsです。ジョブは常に複数のジョブカードを持つ単一のエントリであるため、ジョブテーブルからデータを選択するが、関連するすべてのジョブカードのカウントである結果に別のフィールドを追加する特異な文を書く必要があります。

例:

jobs表:

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

job_cardsテーブルは、もう少し複雑であるが、この場合には1になりjob_idという列を含みます。しかし、上記の仕事に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つのエントリがあっても、単一の結果を返します。

私は1つのステートメントで何をする必要があるのですか?

EDIT:job_cardsテーブルから

サンプルデータ:

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

私が取得したい結果は次のとおりです。ここではIDがのIDで

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

仕事。

+0

明確な使用** COUNT(個別のjc.id)** –

+0

GROUP BY句を逃しました。サンプルデータと期待される結果を掲載してください。それは私たちの道を大きく助けます。 –

答えて

1

あなたはこれを試すことができます。

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

ですので、答えを受け入れてください – nacho

関連する問題