2016-10-28 9 views
0

であったとしても、私は二つのテーブル持っている2つのテーブルのレコードをカウントするカウント機能を使用して同じことを返します。従業員と部門カウントがゼロ

  • 従業員のフィールドを:ID、名前は、部門の
  • フィールドをDEPT_ID :dept_id、名前

部門の従業員数がゼロであっても、部門名とそれに付随する部門あたりの従業員数を取得するクエリが必要です。

私は以下のクエリを試しましたが、従業員数がゼロより多い部門のみを返します。

select d.name, count(e.id) as "Number of employees per department" 
from department d, employee e 
where d.DEPT_ID=e.DEPT_ID 
group by d.name 
order by count(e.id) desc; 

助けてください。

答えて

0

次のクエリは、望ましい結果を示します。

SELECT DEPARTMENT.NAME、COUNT(EMPLOYEE.DEPT_ID)DEPARTMENT LEFT OUTER FROM がEMPLOYEE.DEPT_ID = DEPARTMENT.DEPT_ID GROUP BY DEPARTMENT.NAME ON EMPLOYEEをJOIN。

1

テーブルを外部結合する必要があります。

FROM department d 
    LEFT JOIN employee e 
    ON d.DEPT_ID=e.DEPT_ID 
+0

彼はすでに 'JOIN'をやっていませんか? – Rahul

+0

明示的にはありません。だからこそ、彼はEmployeeテーブルにマッチのないDepartmentsを見ていないので、where句には失敗します。左結合を使用すると、すべての部門が戻されます。 (また、私は間違っている可能性があります特定の詳細については、オラクルの土地で長すぎる) –

+1

あなたの答えの説明は間違っています。明示的なJOINではないので、問題にはなりません。問題は彼が内部結合をしていることです – Rahul

関連する問題