0
SELECT branch_name, workerID, COUNT(*) 
FROM company_branch 
LEFT JOIN workers ON workers.branchID = company_branch.branchID 
WHERE companyID=? 
GROUP BY workers.branchID

私は会社、会社の支店、労働者のデータベースを持っています。各会社には支店があり、各支店には従業員がいます。

ツリー:会社 > 会社の支店 > 従業員

今私が欲しいのは、すべてのブランチとすべてのブランチのワーカー数のリストを取得することです。

私のクエリは機能しますが、ブランチで働く従業員が 0 人の場合は機能しません。従業員がいない場合でも、すべての会社の支店のリストが必要です。

4

3 に答える 3

1

Mark BとWrikkenが書いたことを明確にするために:

null の可能性があるフィールドで aを使用するとどうなるかというと、ゼロ レコードをリストするのではなく、( ) ワーカーのないGROUP BYすべてのレコードをひとまとめにすることです。これは、値が示すものです。company_branchNULLCOUNT(*)

sqlfiddle で何が起こっているかの例を次に示します: http://sqlfiddle.com/#!2/4fa23/2/0

そこには 2 つのブランチ ('Branch 2.1' と 'Branch 2.2') があり、どちらにもワーカーはありません。あなたCOUNT(*)は 2 ですが、最初のcompany_branchレコードのみが表示され、すべてが 1 つのレコードに含まれています。

解決策は、Mark B と Wrikken が述べているとおりGROUP BYですcompany_branch.branchID

于 2013-10-16T22:03:30.270 に答える