Экспорт списка электронных адресов пользователей по ID пользователя

Я думаю, это можно упростить до чего-то вроде этого (а также задействовать некоторые возможности «магии» проводника данных):

-- [params]
-- post_id :post_url
-- text :poll_name = poll

SELECT 
    pv.user_id,
    po.html AS answer,
    ue.email
FROM poll_options po
  JOIN poll_votes pv ON po.id = pv.poll_option_id
  JOIN polls p ON p.id = pv.poll_id
  JOIN user_emails ue ON pv.user_id = ue.user_id AND ue.primary
WHERE p.post_id = :post_url
  AND p.name = :poll_name
ORDER BY po.html

Тип параметра post_id позволяет вставить URL поста и автоматически получить его идентификатор (например, https://meta.discourse.org/t/export-a-list-of-user-emails-by-user-id/373768/5). Кроме того, большинство одиночных опросов в посте по умолчанию называются «poll», если только к тому же посту не добавлен второй опрос (или он не добавлен вручную), поэтому использование этого значения по умолчанию для :poll_name кажется удобным.

Также параметр user_id обладает некоторыми «магическими» свойствами: он отображает аватар и имя пользователя в виде ссылки на карточку профиля пользователя, а не просто обычный идентификатор. Это очень удобно для просмотра результатов «на сайте», хотя если вы планируете их экспортировать, вам нужно будет добавить таблицу users обратно, чтобы получить текстовую версию имени пользователя.