【发布时间】:2018-06-12 05:21:26
【问题描述】:
当存在多个具有不同关系映射的表时,我们应该在报表中显示多少条记录?
假设表员工有 100 条记录
表部门有 35 条记录
table Region有10条记录
员工(0) - 地区(N) - (0-N) 关系
员工(0) - 部门(N) - (0-N) 关系
如果报告询问有多少员工为位于特定区域的特定部门工作,我们应该在报告中显示多少条记录?
【问题讨论】:
当存在多个具有不同关系映射的表时,我们应该在报表中显示多少条记录?
假设表员工有 100 条记录
表部门有 35 条记录
table Region有10条记录
员工(0) - 地区(N) - (0-N) 关系
员工(0) - 部门(N) - (0-N) 关系
如果报告询问有多少员工为位于特定区域的特定部门工作,我们应该在报告中显示多少条记录?
【问题讨论】:
您提供的关系并不表明 Department 和 Region 之间存在直接关系。如果这可以通过 Employee 的连接推断出来,并且您按部门和地区分组以便对 Employee 进行计数,那么您将拥有与部门和地区一样多的记录。
例如,此 SQL 将提供按地区和部门的计数(对表名和列名的完全猜测)。
select region.name, department.name, count(distinct employee.id)
from employee left join region on employee.region_id = region.id
left join department on employee.department_id = department.id
group by region.name, department.name;
如果不知道部门到区域的基数(因为它不是关系联接),我们不能说,但如果是 N 个部门到 1 个区域,您将返回 35 条记录,每个部门一条。
【讨论】: