Я хочу, чтобы мой список «Пользователи, ответившие на тему» включал ИМЯ пользователя.
Я попытался следовать соглашению из другой темы, которое позволяет включать дополнительную информацию в запросы Data Explorer, но при применении того же синтаксиса это не сработало.
Вот запрос, который я выполняю сейчас; он возвращает только «имя пользователя» тех, кто ответил на тему…
-- https://meta.discourse.org/t/68756/8?u=sidv
-- [params]
-- topic_id :topic_id = 536
SELECT u.username
FROM badge_posts p
JOIN topics t ON p.topic_id = t.id
JOIN users u ON p.user_id = u.id
WHERE t.id = :topic_id
GROUP BY p.user_id,u.username
Спасибо за быструю помощь, Jay! По твоей рекомендации я обновил запрос до следующего:
SELECT u.username, u.name
FROM badge_posts p
JOIN topics t ON p.topic_id = t.id
JOIN users u ON p.user_id = u.id
WHERE t.id = :topic_id
GROUP BY p.user_id,u.username
… после чего получил ошибку…
PG::GroupingError: ERROR: column "u.name" must appear in the GROUP BY clause or be used in an aggregate function
LINE 12: SELECT u.username, u.name
Тогда я изменил запрос на следующий, и всё заработало как по маслу!
SELECT u.username, u.name
FROM badge_posts p
JOIN topics t ON p.topic_id = t.id
JOIN users u ON p.user_id = u.id
WHERE t.id = :topic_id
GROUP BY p.user_id,u.username,u.name
Так что из моего исходного фрагмента я добавил следующее:
В строку “SELECT”: , u.name
В строку “GROUP BY”: ,u.name
Ещё раз спасибо, @pfaffman, за помощь с этим синтаксисом!