查询 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;
我在 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;