2014-10-02 79 views
0

我有两个表,一个用于员工,第二个用于记录。我想每一个员工总条目,并命令由像最大总项结果:SQL选择计数声明

Daniel 3 
David 1 

tblEmployee: 
EID Name 
1 Daniel 
2 David 

tblEntry: 
ID Column1 EID 
1 XX  1 
2 XX  1 
3 XX  2 
4 XX  1 
+1

这是一个基本的JOIN GROUP BY – Mihai 2014-10-02 11:09:32

回答

2

试试这个:

select emp.EID,emp.Name,COUNT(etr.EID) 
as total_entries from Employee emp join Entry etr 
on emp.EID=etr.EID 
group by emp.EID,emp.Name 
0

您必须使用group by

select count(*) from tblEmployee ee, tblEntry e where ee.eid = e.eid group by ee.name 
0

有几种在这方面的变化,你不说你使用的是什么版本的SQL Server,但我喜欢这样做:

; 
using A 
as (
    select EID 
     , RecordCount = COUNT(*) 
    from tblEntry 
    group by 
      EID 
) 
select a.EID 
    , e.Name 
    , a.RecordCount 
from A 
    join tblEmployee e 
     on A.EID = e.EID 
order by 
     RecordCount desc 

我喜欢这样做,而不是加入,然后总结,因为你只需要对最小数量的字段进行分组。 EIDtblEntry很可能已经有一个索引,而NametblEmployee可能不会。