У меня есть таблица групп с подробной информацией о группах, к которым мои пользователи могут присоединиться, и отдельная таблица членов группы, чтобы показать, какие пользователи присоединились к каким группам.В таблице group_members есть только столбец для group_id и столбец для user_id.Если есть строка с group_id = 3 И user_id = 10, то мы знаем, что пользователь 10 является членом группы 3.
У меня есть следующий оператор mysql, который хорошо работает, чтобы получить подробную информацию о группах, включая номерчленов в каждой группе зависит от пары условий в предложении WHERE.
SELECT groups.*, COUNT(group_members.group_id) AS member_count
FROM groups LEFT JOIN
group_members
ON groups.group_id = group_members.group_id
WHERE groups.deleted = 0 AND
groups.trainer_id = ' .$trainer_id .'
GROUP BY groups.group_id
ORDER BY groups.group_name'
Проблема заключается в том, что пользователи могут быть удалены и не всегда удаляются из таблицы group_members, когда это происходит.Это означает, что пользователи могут отображаться в подсчете, даже если они больше не находятся в системе в таблице третьих пользователей.
Так что я хочу включить в подсчет только членов группы, если они также присутствуют втаблица пользователей.Я думал, что смогу сделать это с INNER JOIN между членами группы и таблицами пользователей.Примерно так ...
SELECT groups.*, COUNT(users.user_id) AS client_count
FROM groups LEFT JOIN
group_members
ON groups.group_id = group_members.group_id INNER JOIN
users
ON group_members.user_id = users.user_id
WHERE groups.deleted = 0 AND groups.trainer_id = ' .$trainer_id .'
GROUP BY groups.group_id
ORDER BY groups.group_name
Проблема в том, что когда в группе нет участников, группа не отображается в результатах.Я думаю, потому что он не может присоединиться к таблице пользователей.
Если бы кто-нибудь мог объяснить мне, как я могу добиться того, чего я хочу, я был бы очень благодарен.