2012-05-29 5 views
0

Как я могу найти общее количество записей в этом случае:Как найти общее количество записей?

У меня есть таблица «пользователи», таблицы «сообщения» и таблицы «группы». Пользователь может отправить сообщение, и оно будет сохранено в сообщениях таблицы. Каждый пользователь может быть членом одной группы. Теперь я хотел бы показать общее количество сообщений, отправленных всеми пользователями в группе на странице сведений о группе. Как я могу получить всех пользователей в группе и подсчитать их сообщения? Каков наилучший и быстрый способ сделать это?

Я не могу работать с Joins, так что это не сработает. Я не знаю, как это исправить.

SELECT COUNT (message_id) КАК total_messages, d.Userid из сообщений, когда д LEFT JOIN пользователей, так как с на (s.Groupid = $ GroupID) где 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

Brilliant, который работает. Большое спасибо! – 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 
Смежные вопросы