Aide avec SQL - fermeture automatique/répétition des résultats/filtre par semaine

Salut, j’ai créé une requête (en bas) qui affiche le sujet, la catégorie, le nombre de votes d’un sujet, s’il est fermé, quand il a été créé et l’utilisateur qui l’a créé. Si plus d’informations sont nécessaires, n’hésitez pas à me le faire savoir.

J’ai quelques problèmes et questions pour lesquels j’aimerais de l’aide ou des conseils car je suis nouveau en SQL.

  1. Lorsque j’exécute cette requête, le même sujet s’affiche des centaines de fois. Comment puis-je résoudre ce problème ?

  2. Y a-t-il un moyen d’obtenir et d’afficher quand un sujet sera automatiquement fermé ?

  3. Je veux que seuls les sujets de la semaine s’affichent. Mais le date_trunc que j’ai ajouté montre des éléments datant d’un peu plus d’une semaine ?

SELECT
    t.id as topic_id,
    t.category_id,
    dvc.votes_count,
    t.closed,
    t.created_at,
    t.user_id
FROM topics t, discourse_voting_topic_vote_count dvc
WHERE t.closed = true
    AND t.category_id = 20
    AND dvc.votes_count >= 1
    AND t.created_at <= date_trunc('week', current_date)::date
    AND t.created_at >= date_trunc('week', current_date)::date - 7

Essayez d’ajouter ceci après la ligne WHERE.

 AND t.id = dvc.topic_id

Je ne l’ai pas testé, mais je pense que c’est votre gros problème (corrige le problème du « même sujet »)

1 « J'aime »

Génial ! Merci Jay, ça fonctionne :smiley:

Auriez-vous une idée de comment aborder les autres problèmes ?

Mon hypothèse concernant (3) est qu’il s’agit d’un problème de fuseau horaire, et/ou qu’il est basé sur la seconde où vous exécutez le script et que vous voulez le minuit précédent ou suivant. (Pas tout à fait sûr de la façon de résoudre l’un ou l’autre de ces problèmes à la volée).

Je ne suis pas sûr que cela aide, mais vous pouvez essayer

Pour savoir quand ils vont fermer, vous devrez ajouter quelque chose à la partie SELECT (que vous pouvez déduire des champs disponibles) et changer FROM comme

   FROM topics t, discourse_voting_topic_vote_count dvc, topic_timers tt

et ajouter ceci après WHERE

    AND tt.topic_id=t.id

(tout comme celui que vous avez ajouté auparavant).

1 « J'aime »

Merci encore Jay, tu me sauves la vie (:

1 « J'aime »

Génial ! Ça a marché ? C’est super. Content que ça ait aidé.

2 « J'aime »

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