Penso che questo possa essere semplificato in qualcosa di simile (e fare anche leva su un po’ della magia del data explorer):
-- [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
Il tipo di parametro post_id ti permette di incollare l’URL del post e ottenere il suo post_id in quel modo (es. https://meta.discourse.org/t/export-a-list-of-user-emails-by-user-id/373768/5). E la maggior parte dei sondaggi singoli in un post sono semplicemente chiamati ‘poll’ a meno che non se ne aggiunga un secondo allo stesso post (o se ne aggiunga uno manualmente), quindi averlo come predefinito per :poll_name è sembrato utile.
Inoltre, user_id ha una certa magia, quindi mostrerà un avatar e un nome utente come link alla scheda utente/profilo anziché semplicemente l’ID utente semplice stesso. Molto utile per visualizzare i risultati ‘sul sito’, anche se se hai intenzione di esportarli allora dovresti aggiungere nuovamente la tabella users per ottenere la versione testuale del nome utente.