Следующий запрос SQL делает именно то, что должен, но я не знаю, как его изменить, поэтому он делает то, что мне нужно , чтобы сделать.
SELECT
a.id AS comment_id, a.parent_comment_id, a.user_id, a.pid, a.comment, a.blocked_at, a.blocked_by, a.created_at, a.updated_at,
b.name, b.is_moderator, COUNT(IF(d.type = 1, 1, NULL)) AS a_count, COUNT(IF(d.type = 2, 1, NULL)) AS b_count
FROM
comments AS a
RIGHT JOIN
users AS b ON b.id = a.user_id
RIGHT JOIN
node_user AS c ON c.user = b.id
RIGHT JOIN
nodes AS d ON d.id = c.node
WHERE
a.pid = 999
GROUP BY
comment_id
ORDER BY
a.created_at ASC
Этополучает все комментарии, относящиеся к определенному pid
, затем RIGHT JOINS
дополнительные пользовательские данные, такие как name
и is_moderator
, затем RIGHT JOINS
любые (так называемые) узлы, включая дополнительные данные, основанные на user id
и node id
.Как видно из SELECT
, я считаю узлы в зависимости от их типа.
Это прекрасно работает для пользователей, у которых есть nodes
, подключенные к их учетным записям.Но пользователи, у которых их нет, поэтому чьи id
не существуют в таблицах node_user
и nodes
, не будут отображаться в результатах запроса.
Так что мойвопрос:
Как я могу сделать так, чтобы даже пользователи, у которых нет nodes
, все еще отображались в результатах запроса, но с a_count
и b_count
из 0
или NULL
.