أعتقد أنه يمكن تبسيط هذا إلى شيء كهذا (والاعتماد أيضًا على بعض سحر مستكشف البيانات):
-- [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 للمنشور والحصول على post_id الخاص به بهذه الطريقة (على سبيل المثال، https://meta.discourse.org/t/export-a-list-of-user-emails-by-user-id/373768/5). ومعظم الاستطلاعات الفردية في منشور تسمى ببساطة “poll” ما لم تتم إضافة استطلاع ثانٍ إلى نفس المنشور (أو تمت إضافته يدويًا)، لذا فإن وجود هذا كافتراضي لـ :poll_name يبدو مفيدًا.
أيضًا، user_id لديه بعض السحر الخاص به بحيث يعرض صورة رمزية واسم مستخدم كرابط لبطاقة المستخدم/الملف الشخصي بدلاً من مجرد معرف المستخدم العادي نفسه. مفيد جدًا لعرض النتائج “على الموقع”، على الرغم من أنه إذا كنت تخطط لتصديرها، فستحتاج إلى إضافة جدول users مرة أخرى للحصول على النسخة النصية لاسم المستخدم.