2012-05-29 40 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