1

現在、INNER JOIN 句を使用してクエリを実行している 2 つのテーブルがあります。部門というラベルの付いた最初のテーブルはかなり単純で、deptID、deptName、および companyID の 3 つのフィールドのみが含まれています。departmentMemberships というラベルの付いた 2 番目のテーブルはさらに単純で、deptID と employeeID の 2 つのフィールドしかありません。私の現在の SQL ステートメントは、これらのテーブルの両方にクエリを実行し、すべての deptID、deptName、および各部門の従業員数を返します。前述の部門に登録されている従業員がいない場合、私のクエリは部門を返しません。これが私の現在のクエリです。

`SELECT departments.deptID, departments.deptName,
COUNT(departmentMemberships.deptID) AS employeeCount
FROM departmentMemberships
INNER JOIN departments
ON departmentMemberships.deptID = departments.deptID
WHERE departments.companyID = 1
GROUP BY departments.deptID, departments.deptName
ORDER BY departments.deptName ASC;`

TSQL に不慣れで申し訳ありませんが、このクエリを変更して、従業員が登録されていない部門を含むすべての部門を返すにはどうすればよいでしょうか?

どうもありがとうございました

4

1 に答える 1

6

書かれているように、あなたINNER JOINをaに変更してくださいRIGHT OUTER JOIN。しかし、私はLEFT JOIN自分自身を好みます。従う方が簡単です。すなわち:

SELECT departments.deptID
     , departments.deptName
     , COUNT(departmentMemberships.deptID) AS employeeCount
FROM departments
LEFT OUTER JOIN departmentMemberships
ON departmentMemberships.deptID = departments.deptID
WHERE departments.companyID = 1
GROUP BY departments.deptID, departments.deptName
ORDER BY departments.deptName ASC
于 2013-01-26T02:08:54.420 に答える