2011-08-16 80 views
0

我有SQL Server,它以這樣的方式輸出記錄在視圖上設置現在幫助樞軸查詢

id time  winnerId 
------------------------------- 
35 1313114959 1 
36 1313116182 1 
37 1313116397 1 
38 1313116596 2 
39 1313116807 1 
40 1313116858 1 
41 1313116908 1 
42 1313117708 2 
46 1313118441 1 
47 1313118719 1 
48 1313120938 1 
49 1313123767 1 
50 1313159321 3 

,當我quering另一個表tbl_players,我希望把他的ID和怎麼算許多比賽他贏了並且顯示在他的右邊。 tbl_player

id name 
----------- 
1 jack 
2 hugh 
3 man  

我想要的結果,以這樣的方式

id name win 
----------------- 
1 jack 9 
2 hugh 2 
3 man  1 

的總勝已被計數,與參考視圖,讓叫它view_winner

怎麼寫這樣的查詢?

回答

0

您加入兩個表一起,和計數的次數存在於每一個玩家

select p.id, p.name, count(w.winnerid) 
from tbl_player p inner join someview w on w.winnerid = p.id 
group by p.id, p.name, w.winnerid 
+0

可能應該對'p.id,p.name'進行分組;並且質量測試是SQL中的一個單一'=' – Andomar

+0

yes,隨意編輯答案 –

0

你可以加入表一起贏家ID,並group by計算勝場數:

select p.id 
,  p.name 
,  count(w.winnerId) 
from tbl_players p 
left join 
     view_winner w 
on  p.id = w.winnerId 
group by 
     p.id 
,  p.name 
0

您不需要該輸出的數據透視;

select 
    p.id as id, 
    p.name as name, 
    count(*) as win 
from view_winner 
    inner join tbl_player p on (p.id = winnerId) 
group by p.id, name 
order by p.id 
+0

'count(*)'將返回1給沒有勝利的玩家 – Andomar

+0

我假設一個沒有勝利的玩家不會在視圖中所以會被連接排除 –