Moyen le plus simple d'exporter une liste d'e-mails d'utilisateurs par ID ou nom d'utilisateur ?

Je pense que cela pourrait être simplifié comme ceci (et s’appuyer également sur la magie de l’explorateur de données) :

-- [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

Le type de paramètre post_id vous permet de coller l’URL du message et d’obtenir son post_id de cette façon (par exemple, https://meta.discourse.org/t/export-a-list-of-user-emails-by-user-id/373768/5). Et la plupart des sondages uniques dans un message sont simplement appelés « poll » à moins qu’un second ne soit ajouté au même message (ou ajouté manuellement), donc avoir cela comme valeur par défaut pour :poll_name semblait utile.

De plus, user_id a une certaine magie qui permet d’afficher un avatar et un nom d’utilisateur sous forme de lien vers la carte utilisateur/profil plutôt que simplement l’identifiant utilisateur brut. Très utile pour visualiser les résultats « sur site », bien que si vous prévoyez de les exporter, vous devrez réintégrer la table users pour obtenir la version texte du nom d’utilisateur.