あるテーブルからデータを選択するが、特定のフィールドに一致するIDを持つ別のテーブルのエントリをカウントするmySQL文を作成しようとしています。COUNTが正しく一致しないmySQL JOIN文
2つのテーブルは、jobs
とjob_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 |
---------------------------------------------
仕事。
明確な使用** COUNT(個別のjc.id)** –
GROUP BY句を逃しました。サンプルデータと期待される結果を掲載してください。それは私たちの道を大きく助けます。 –