2012-05-29 71 views
0

我該如何找到這種情況下的總記錄數:如何查找記錄總數?

我有一個表'用戶',一個表'消息'和一個表'組'。用戶可以發送一條消息,並將其存儲在表'消息'中。每個用戶可以是一個組的成員。現在我想顯示羣組中所有用戶在羣組詳細信息頁面上發送的總郵件。我如何獲得組中的所有用戶並計算他們的消息?什麼是最好和最快的方式來做到這一點?

我無法使用連接,所以這是行不通的。我不知道如何解決它。

SELECT COUNT(MESSAGE_ID)AS共TOTAL_MESSAGES,d.Userid FROM消息AS d LEFT JOIN用戶爲S ON(s.Groupid = $ GROUPID)WHERE s.Groupid = $ GROUPID

謝謝!

如果你需要的表結構:

** users ** 
Userid 
Groupid 

** groups ** 
Groupid 
Some_details 

** messages ** 
Messageid 
Userid 
Subject 
Content 

回答

1

如果你正在尋找的消息總量,而不需要每個用戶知道,嘗試

SELECT COUNT(messages.Messageid) as total_messages 
FROM messages 
    INNER JOIN users ON messages.Userid = users.Userid 
WHERE users.Groupid = $groupid 

確保您索引messages.Userid字段以及如果你會基於它做很多的查詢。

孤男寡女每個用戶的計數嘗試

SELECT 
    COUNT(messages.Messageid) as num_messages, 
    messages.Userid 
FROM messages 
    INNER JOIN users ON messages.Userid = users.Userid 
WHERE users.Groupid = $groupid 
GROUP BY users.Userid 
+0

輝煌,工程。非常感謝你! – Jordy

0

如果你想在某個特定組的所有用戶與他們的全部消息,然後嘗試這個

SELECT messages.Userid, COUNT(messages.Messageid) as total_messages 
FROM messages 
    INNER JOIN users ON messages.Userid = users.Userid 
WHERE users.Groupid = $groupid GROUPBY messages.Userid 
+0

Aaron W.的解決方案快嗎? – Jordy

+0

其相同的答案,我張貼和他編輯他的答案在同一時間:) – Uttara

0
Select Groupid,Some_details,count(Messageid) as count_message from groups Left join users On 
users.Groupid = groups.Groupid left join messages on messages.Userid = users.users.Userid GROUP BY Groupid