Dies ist eine SQL-Version des Dashboard-Berichts für Beitragsbearbeitungen.
Dieser Dashboard-Bericht zeigt Beiträge an, die über einen bestimmten Zeitraum bearbeitet wurden, und enthält Informationen über den Bearbeiter, den Autor des Beitrags und den Grund für die Bearbeitung des Beitrags. Dieser Bericht soll Administratoren helfen, die Bearbeitungsaktivitäten in ihren Foren zu überwachen und zu verstehen, insbesondere in Fällen, in denen andere Benutzer als die ursprünglichen Autoren Beiträge bearbeiten.
-- [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
Erklärung der SQL-Abfrage
- Parameterdeklaration:
- Die Abfrage akzeptiert zwei Parameter,
:start_dateund:end_date, die den Datumsbereich für den Bericht definieren. Beide Datumsparameter akzeptieren das DatumsformatJJJJ-MM-TT.
- Die Abfrage akzeptiert zwei Parameter,
- Datenauswahl: Die
SELECT-Anweisung gibt die Spalten an, die im endgültigen Bericht angezeigt werden. Dazu gehören:pr.created_at::date as day: Das Datum, an dem eine Beitragsrevision erstellt wurde, und es wird in den Datentypdateumgewandelt, um den Zeitanteil zu entfernen.pr.post_id: Die ID des Beitrags, der bearbeitet wurde.pr.user_id AS editor_user_id: Die ID des Benutzers, der die Bearbeitung vorgenommen hat. Dies wird alseditor_user_idbezeichnet, um ihn vom Autor des ursprünglichen Beitrags zu unterscheiden.p.user_id AS author_user_id: Die ID des Benutzers, der den ursprünglichen Beitrag verfasst hat, bezeichnet alsauthor_user_id.p.edit_reason: Der Grund für die Bearbeitung, falls einer angegeben wurde.
- Tabellen verbinden: Die
FROM-Klausel enthält eineJOIN-Anweisung, die die Tabellepost_revisions(pr) mit der Tabelleposts(p) kombiniert. Die Verknüpfung erfolgt unter der Bedingung, dasspost_revisions.post_idmitposts.idübereinstimmt, wodurch eine Revision mit den Details des ursprünglichen Beitrags verknüpft wird. - Filter: Die
WHERE-Klausel wendet mehrere Filter auf die Daten an:pr.created_at BETWEEN :start_date AND :end_date: Schließt nur Beitragsrevisionen ein, die innerhalb des durch die Parameter angegebenen Datumsbereichs erstellt wurden.pr.user_id > 0: Stellt sicher, dass der Bearbeiter ein tatsächlicher Benutzer und keine Systemoperation ist (eineuser_idvon 0 zeigt normalerweise eine Systemoperation an).pr.user_id <> p.user_id: Filtert Revisionen heraus, die vom ursprünglichen Autor des Beitrags vorgenommen wurden, und konzentriert sich nur auf Bearbeitungen, die von anderen Benutzern vorgenommen wurden.
- Ergebnisse sortieren: Die Klausel
ORDER BY pr.created_at ASCsortiert die Ergebnisse von ältesten zu neuesten basierend auf dem Zeitstempel, wann jede Beitragsrevision vorgenommen wurde.
Beispielergebnisse
| Tag | Beitrag | Bearbeiter | Autor | Bearbeitungsgrund |
|---|---|---|---|---|
| 2023-12-20 | post_abc | user1 | user2 | Beispiel Bearbeitungsgrund |
| 2023-12-21 | post_dfg | user3 | user4 | Beispiel Bearbeitungsgrund |
| 2023-12-24 | post_xyz | user5 | user6 | NULL |