2014-10-02 100 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可能不會。