如何查找总记录?

时间:2012-05-29 10:39:23

标签: php mysql

如何在这种情况下找到总记录:

我有一个表'用户',一个表'消息'和一个表'组'。用户可以发送消息,并将其存储在表“消息”中。每个用户可以是一个组的成员。现在,我想在组详细信息页面上显示组中所有用户发送的总消息。如何获取组中的所有用户并计算他们的消息?最好和最快的方法是什么?

我无法使用Joins,所以这不起作用。我不知道如何解决它。

  

SELECT COUNT(Message_id)AS total_messages,d.Userid FROM messages AS   d LEFT JOIN用户AS s ON(s.Groupid = $ groupid)WHERE   s.Groupid = $ GROUPID

谢谢!

如果您需要表格结构:

** users **
Userid
Groupid

** groups **
Groupid
Some_details

** messages **
Messageid
Userid
Subject
Content

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分: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   
相关问题