如何在这种情况下找到总记录:
我有一个表'用户',一个表'消息'和一个表'组'。用户可以发送消息,并将其存储在表“消息”中。每个用户可以是一个组的成员。现在,我想在组详细信息页面上显示组中所有用户发送的总消息。如何获取组中的所有用户并计算他们的消息?最好和最快的方法是什么?
我无法使用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
答案 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