استعلام عن إعدادات البريد الإلكتروني للمستخدمين

How could I find out how many users have each email setting?

I’m asking as only about a tenth of users watching a topic are being emailed post notifications.

Thank you.

هل تقصد تلك الموجودة في صفحة التفضيلات/البريد الإلكتروني الخاصة بهم؟ يوجد هذا الحقل في جدول user_options (email_level)، وهناك أيضًا حقل الرسائل الخاصة (email_messages_level).

أعتقد أن هذا يعمل. فهو يستخرج المستخدمين الذين يتابعون موضوعًا معينًا، ويحصيهم حسب مستوى البريد الإلكتروني:

مفتاح مستوى البريد الإلكتروني
0 دائمًا
1 فقط عندما تكون بعيدًا
2 أبدًا
-- [params]
-- int :topic_id

SELECT tu.topic_id AS topic_id,
uo.email_level,
COUNT(*)
FROM user_options uo
JOIN topic_users tu ON tu.user_id = uo.user_id
WHERE tu.notification_level = 3
AND tu.topic_id = :topic_id
GROUP BY topic_id, uo.email_level

أخبرني إذا أفسدت الأمر. :slightly_smiling_face::+1:


تحديث:

أعتقد أن هذا يعمل أيضًا: (ويعرض بشكل أفضل قليلاً)

-- [params]
-- int :topic_id

SELECT tu.topic_id AS topic_id,
COUNT(CASE WHEN tu.notification_level = 3 THEN 1 END) AS watching,
COUNT(CASE WHEN uo.email_level = 0 THEN 1 END) AS always,
COUNT(CASE WHEN uo.email_level = 1 THEN 1 END) AS only_when_away,
COUNT(CASE WHEN uo.email_level = 2 THEN 1 END) AS never
FROM user_options uo
INNER JOIN topic_users tu ON tu.user_id = uo.user_id
WHERE tu.notification_level = 3
AND tu.topic_id = :topic_id
GROUP BY topic_id
إعجاب واحد (1)