Come posso scoprire quanti utenti hanno impostato ciascuna opzione per le email?
Chiedo perché solo circa un decimo degli utenti che seguono un argomento riceve le notifiche via email per i nuovi post.
Grazie.
Come posso scoprire quanti utenti hanno impostato ciascuna opzione per le email?
Chiedo perché solo circa un decimo degli utenti che seguono un argomento riceve le notifiche via email per i nuovi post.
Grazie.
Quelli nella loro pagina Preferenze/Email? Quel campo si trova nella tabella user_options (email_level), e c’è anche quello dei messaggi privati (email_messages_level).
Penso che questo funzioni. Estrae gli utenti che seguono un particolare argomento e li conta per livello di email:
| Chiave | Livello Email |
|---|---|
| 0 | Sempre |
| 1 | Solo quando assente |
| 2 | Mai |
-- [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
Fammi sapere se ho combinato un pasticcio. ![]()
![]()
Aggiornamento:
Penso che anche questo funzioni: (e viene visualizzato in modo un po’ più ordinato)
-- [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