0

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

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

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

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

谢谢!

如果需要表结构:

** users **
Userid
Groupid

** groups **
Groupid
Some_details

** messages **
Messageid
Userid
Subject
Content
4

3 回答 3

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
于 2012-05-29T10:48:00.757 回答
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   
于 2012-05-29T11:06:48.213 回答
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
于 2012-05-29T10:54:30.593 回答