查询 returns 笛卡尔积 (Northwind)

Query returns cartesian product (Northwind)

我在 oracle 中使用 northwind 数据库。

任务: 取号在每个地区工作的员工人数。

结果: (地区名称,员工人数)

我正在尝试这个查询,但它 return 笛卡尔积

select r.regiondescription, count(e.employeeid)
from employees e,
     employeeterritories et,
     territories t,
     region r 
where r.regionid = t.regionid
  and et.territoryid = t.territoryid
  and e.employeeid = et.employeeid
group by r.regiondescription;

问题:我的查询有什么问题?

我唯一能想到的是,你的 table 之一是乘法结果,你应该改用 count(DISTINCT):

select r.regiondescription, count(distinct e.employeeid)
from employees e,
     employeeterritories et,
     territories t,
     region r 
where r.regionid = t.regionid
  and et.territoryid = t.territoryid
  and e.employeeid = et.employeeid
group by r.regiondescription;