我不明白将count(*)
属性作为参数与计数之间的区别。
这里我举个例子:有两种关系:
project (id, name, number);
employee (ssn, name, surname);
working_on (employee_ssn, project_id);
与employee_ssn
哪些引用employee(ssn)
和project_id
引用project(id)
。
主键:project(id)
, employee(ssn)
, working_on ( employee_ssn
, project_id
)。
现在我必须为每个项目查找项目的 ID、名称和从事该项目的员工人数。
一个正确的解决方案(在书中找到)是这个:
select id, name, count (*)
from working_on join project on id=project_id
group by name, id
我有,不明白为什么这个解决方案是有效的,不应该count (*)
计算所有的元组?为什么以这种方式获得工作的确切员工数量?
我已经写了这个解决方案:
select id, name, count (employee_ssn)
from working_on join project on id=project_id
group by name, id
解决方案是否等效?一般来说,使用and
有区别吗?您能否提供一个示例,说明这两种语法会产生不同的结果?count (*)
count(attribute)