Запрос с COUNT и GROUP BY

Drooid

Новичок
Запрос с COUNT и GROUP BY

Добрый день!
Условия задачи следующие.

Есть табличка topics.
В ней поля
t_id, t_subject, t_poster_id

Есть табличка invitations
в ней поля i_id, i_from_user_id, i_to_user_id, i_topic_id

Грубо говоря форум, в котором автор темы может специально разослать другим участникам приглашения..

И при этом, пользователь должен видеть только те темы, в которых он либо автор, либо у него есть приглашение (приглашение на свою тему он естественно не получает).

Сделал это таким запросом
PHP:
SELECT
	topics.t_id,
	topics.t_subject
FROM
	topics
LEFT JOIN
	invitations
ON
	topics.t_id = invitations.i_topic_id
WHERE
	(topics.t_poster_id = '".$user_id."'
	OR invitations.i_to_user_id = '".$user_id."')
GROUP BY
	topics.t_id
LIMIT
	0, 3
И это даже работает.

А дальше мне надо посчитать сколько всего таких тем.
Пробовал так
PHP:
SELECT
	COUNT(topics.t_id)
FROM
	topics
LEFT JOIN
	invitations
ON
	topics.t_id = invitations.i_topic_id
WHERE
	(topics.t_poster_id = '".$user_id."'
	OR invitations.i_to_user_id = '".$user_id."')
GROUP BY
	topics.t_id
Но он возвращает несколько строчек.. (причем их количество и есть правильный результат). Без GROUP BY сумму того, что с GROUP BY.
Но я никак не могу понять, почему в данном условии он находит одни и теже topics.t_id, и соответственно с GROUP BY он считает их количество.. разных..
 

Wicked

Новичок
мой вариант:

SELECT count(distinct topics.t_id) ...
и убрать GROUP BY

PS: а какой смысл в LEFT JOIN, если ` invitations` присутствует в WHERE ?
 

Drooid

Новичок
COUNT(*) пробовал, толку ноль..

с distinct вроде как работает.. буду дальше проверять..

т.е. можно делать просто JOIN?
 
Сверху