2012-03-17 111 views
0

我下面的表格有:COUNT函數JOIN

A FromA User 
1 NULL Bob 
2 1  Bob 
3 1  Chris 
4 2  Chris 

用戶是誰創建的項目A. FROMA的人的名字是用戶抓住它從源頭。

我想弄明白克里斯最頻率的來源。

我查詢

SELECT count(T1.A GROUP BY T1.User), T1.User 
FROM Table T0 
INNER JOIN Table T1 ON T0.FromA=T1.A 
WHERE T0.User='Chris' 

它應該返回Bob=2。但它似乎並不奏效。

回答

1

試試這個:

select t2.user, count(*) Total from t t1 
join t t2 on t1.fromA = t2.a 
where t1.user = 'Chris' 
group by t2.user 
order by Total desc 
limit 1 

limit 1會給你只是最常用的來源。

編輯:

內連接將無法獲取記錄=> 1 | NULL | Bob作爲'fromA'列具有空值。所以,切換到左連接 - Angelin Nadar

沒有。這裏是一個working example

+0

內連接將無法獲取記錄=> 1 | NULL | Bob作爲'fromA'列具有空值。所以,切換到左加入 – 2012-03-17 16:27:53

+0

@AngelinNadar我不需要使用左連接,並且使用它效率較低。該查詢已經過測試。請重新分析數據。想想如果使用左連接並查詢用戶Bob,給定數據的查詢會返回什麼內容! – 2012-03-17 16:38:49

+1

你是abs。正確你的查詢滿足所有condn +1 – 2012-03-17 16:40:32

1

你只是把你的小組放在了錯誤的地方。這應該工作

SELECT count(T1.A), T1.User 
FROM Table T0 
INNER JOIN Table T1 ON T0.FromA=T1.A 
WHERE T0.User='Chris' 
GROUP BY T1.User 
+0

你缺少克里斯的最頻源 – 2012-03-17 16:23:57

1

嘗試這個,我已經改變了表的別名:

SELECT count(*), t_User.User 
FROM 
    Table t_FromA 
    LEFT OUTER JOIN 
    Table t_User 
    ON t_User.FromA=t_FromA.A 
WHERE t_FromA.User='Chris'