2012-05-08 44 views
0

我想要統計的消息數userid = 1做了,然後COUNT所有其他userid消息的數量和打印出人的名字,其中的數字messages = userid = 1的消息數量。MS ACCESS SQL:如何做一個嵌套的計數

所以我需要做一個嵌套計數。我有2桌這個。消息和用戶。

例如:

SELECT COUNT(*) 
FROM MESSAGES 
WHERE user_id = 1 

,結果是2 然後,我需要

SELECT COUNT(*) 
FROM MESSAGES 
WHERE COUNT(*) = 2 

我怎麼做一個嵌套計數這個,所以我可以做這樣的事情

SELECT USER.user_name 
FROM MESSAGES INNER JOIN USER ON MESSAGES.user_id = USER.user_id 
WHERE COUNT(*) = ( 
SELECT COUNT(*) 
FROM MESSAGES 
WHERE user_id = 1 
) 

上面的例子不適合我。我正在使用MsAccess。任何幫助將不勝感激。謝謝。

回答

0

嘗試使用HAVING語法

SELECT USER.user_name 
FROM MESSAGES INNER JOIN USER ON MESSAGES.user_id = USER.user_id 
GROUP BY MESSAGES.user_id, USER.user_name 
HAVING COUNT(*) = ( 
SELECT COUNT(*) 
FROM MESSAGES 
WHERE user_id = 1 
) 
+0

它給了我一個錯誤,指出消息「您試圖執行一個查詢,不包括指定表達式‘USER_NAME’作爲集合功能的一部分。」任何想法是什麼意思? –

+0

@NuttyNur將'GROUP BY'上的'USER.user_name'變成'GROUP BY MESSAGES.user_id,USER.user_name' –

+0

它工作!非常感謝! –