Requête d'explorateur de données pour renvoyer certains avis de publication ?

Existe-t-il un moyen d’étendre légèrement cette fonctionnalité et d’envoyer une notification à un utilisateur (ou à un groupe) lorsqu’un message de « première visite » ou de « retour » a été publié ?

Nous avons quelqu’un qui souhaite jouer le rôle du « comité d’accueil », mais qui ne lit pas chaque publication sur un grand forum. Il serait idéal de pouvoir recevoir une notification à ce sujet.

4 « J'aime »

Je réponds à ma propre question, voici une requête Data Explorer pour récupérer les utilisateurs qui ont effectué leur tout premier message le plus récemment :

-- [params]
-- date :start_date

SELECT u.id AS user_id, p.id AS post_id, p.created_at
FROM users u
JOIN user_stats us
ON u.id = us.user_id
JOIN posts p
ON u.id = p.user_id
WHERE p.created_at = us.first_post_created_at
AND us.first_post_created_at BETWEEN :start_date::date AND NOW()
ORDER BY us.first_post_created_at desc

Il s’agit d’une modification mineure de cette requête par @tshenry :

On pourrait l’améliorer en définissant une période fixe à partir de laquelle on regarde en arrière, par exemple une semaine ou un mois, mais cela m’a mis en difficulté car je n’ai pas réussi à trouver comment faire fonctionner NOW() - 7 ou quelque chose de similaire.

De plus, exclure les MP comme dans une autre requête de @tshenry serait formidable, mais en tant que novice en SQL, il me faudrait énormément de temps pour comprendre comment le faire.

7 « J'aime »

Je pense que vous voudriez quelque chose comme :

AND us.first_post_created_at > NOW() - INTERVAL '7 DAYS'

(documentation PostgreSQL sur les dates/heure)

Pour exclure les MP, vous devez effectuer une jointure avec la table topics (en suivant la clé étrangère posts.topic_id) et vérifier la colonne archetype. Ajoutez ceci avant la clause WHERE :

JOIN topics t ON p.topic_id = t.id

…et ceci avant le ORDER BY :

AND t.archetype = 'regular'
6 « J'aime »

Les avis de publication sont en réalité stockés dans la table post_custom_fields, vous pouvez donc obtenir une liste plus précise des publications comme ceci :

-- [params]
-- int :days_ago = 7

SELECT p.created_at,
       p.id AS post_id,
       p.user_id,
       pcf.value AS "type d'avis"
FROM post_custom_fields pcf
INNER JOIN posts p ON pcf.post_id = p.id
INNER JOIN topics t ON p.topic_id = t.id
WHERE pcf.name = 'notice_type'
  AND p.created_at > NOW() - INTERVAL ':days_ago days'
  AND t.archetype = 'regular'
ORDER BY p.created_at ASC
9 « J'aime »

Absolument génial ! Merci, c’est bien mieux.

3 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.