Ceci est une version SQL du rapport de tableau de bord pour les modifications de publication.
Ce rapport de tableau de bord affiche les publications qui ont été modifiées sur une période donnée, et inclut des informations sur l’éditeur, l’auteur de la publication et la raison pour laquelle la publication a été modifiée. Ce rapport est conçu pour aider les administrateurs à surveiller et à comprendre l’activité de modification au sein de leurs forums, en se concentrant particulièrement sur les cas où des utilisateurs autres que les auteurs d’origine modifient des publications.
-- [params]
-- date :start_date = 2023-12-16
-- date :end_date = 2024-01-16
SELECT
pr.created_at::date as day,
pr.post_id as post_id,
pr.user_id AS editor_user_id,
p.user_id AS author_user_id,
p.edit_reason
FROM post_revisions pr
JOIN posts p ON p.id = pr.post_id
WHERE pr.created_at BETWEEN :start_date AND :end_date
AND pr.user_id > 0
AND pr.user_id <> p.user_id
ORDER BY pr.created_at ASC
Explication de la requête SQL
- Déclaration des paramètres :
- La requête accepte deux paramètres,
:start_dateet:end_date, qui définissent la plage de dates pour le rapport. Les deux paramètres de date acceptent le format de dateAAAA-MM-JJ.
- La requête accepte deux paramètres,
- Sélection des données : L’instruction
SELECTspécifie les colonnes qui apparaîtront dans le rapport final. Celles-ci incluent :pr.created_at::date as day: La date à laquelle une révision de publication a été créée, et elle est convertie en typedatepour supprimer l’heure.pr.post_id: L’ID de la publication qui a été modifiée.pr.user_id AS editor_user_id: L’ID de l’utilisateur qui a effectué la modification. Ceci est aliasé eneditor_user_idpour le différencier de l’auteur de la publication d’origine.p.user_id AS author_user_id: L’ID de l’utilisateur qui a rédigé la publication d’origine, aliasé enauthor_user_id.p.edit_reason: La raison fournie pour la modification, si une raison a été donnée.
- Jointure des tables : La clause
FROMinclut une instructionJOINqui combine la tablepost_revisions(pr) avec la tableposts(p). La jointure est effectuée sur la condition quepost_revisions.post_idcorresponde àposts.id, reliant ainsi une révision aux détails de la publication d’origine. - Filtres : La clause
WHEREapplique plusieurs filtres aux données :pr.created_at BETWEEN :start_date AND :end_date: Inclut uniquement les révisions de publication créées dans la plage de dates spécifiée par les paramètres.pr.user_id > 0: Garantit que l’éditeur est un utilisateur réel et non une opération système (unuser_idde 0 indique généralement une opération système).pr.user_id <> p.user_id: Filtre les révisions effectuées par l’auteur d’origine de la publication, se concentrant uniquement sur les modifications apportées par d’autres utilisateurs.
- Ordonnancement des résultats : La clause
ORDER BY pr.created_at ASCordonne les résultats du plus ancien au plus récent en fonction de l’horodatage de chaque révision de publication.
Exemple de résultats
| jour | publication | éditeur | auteur | raison_modification |
|---|---|---|---|---|
| 2023-12-20 | post_abc | user1 | user2 | Exemple de raison de modification |
| 2023-12-21 | post_dfg | user3 | user4 | Exemple de raison de modification |
| 2023-12-24 | post_xyz | user5 | user6 | NULL |