我不明白将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)