Esta es una versión SQL del Informe del Panel de Control para Ediciones de Publicaciones.
Este informe del panel de control muestra las publicaciones que fueron editadas durante un rango de fechas específico, e incluye información sobre el editor, el autor de la publicación y la razón por la que se editó la publicación. Este informe está diseñado para ayudar a los administradores a monitorear y comprender la actividad de edición que ocurre dentro de sus foros, centrándose particularmente en los casos en que usuarios distintos de los autores originales realizan ediciones en las publicaciones.
-- [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
Explicación de la Consulta SQL
- Declaración de Parámetros:
- La consulta acepta dos parámetros,
:start_datey:end_date, que definen el rango de fechas para el informe. Ambos parámetros de fecha aceptan el formato de fechaYYYY-MM-DD.
- La consulta acepta dos parámetros,
- Selección de Datos: La declaración
SELECTespecifica las columnas que aparecerán en el informe final. Estas incluyen:pr.created_at::date as day: La fecha en que se creó una revisión de publicación, y se convierte a tipodatepara eliminar la parte de la hora.pr.post_id: El ID de la publicación que fue editada.pr.user_id AS editor_user_id: El ID del usuario que realizó la edición. Se le da el aliaseditor_user_idpara diferenciarlo del autor de la publicación original.p.user_id AS author_user_id: El ID del usuario que creó la publicación original, con el aliasauthor_user_id.p.edit_reason: La razón proporcionada para la edición, si se dio alguna.
- Unión de Tablas: La cláusula
FROMincluye una declaraciónJOINque combina la tablapost_revisions(pr) con la tablaposts(p). La unión se realiza bajo la condición de quepost_revisions.post_idcoincida conposts.id, vinculando así una revisión con los detalles de la publicación original. - Filtros: La cláusula
WHEREaplica varios filtros a los datos:pr.created_at BETWEEN :start_date AND :end_date: Solo incluye revisiones de publicaciones creadas dentro del rango de fechas especificado por los parámetros.pr.user_id > 0: Asegura que el editor sea un usuario real y no una operación del sistema (unuser_idde 0 generalmente indica una operación del sistema).pr.user_id <> p.user_id: Filtra las revisiones realizadas por el autor original de la publicación, centrándose solo en las ediciones realizadas por usuarios diferentes.
- Ordenación de Resultados: La cláusula
ORDER BY pr.created_at ASCordena los resultados de más antiguo a más reciente según la marca de tiempo de cuándo se realizó cada revisión de publicación.
Resultados de Ejemplo
| día | publicación | editor_usuario | autor_usuario | razón_edición |
|---|---|---|---|---|
| 2023-12-20 | post_abc | usuario1 | usuario2 | Razón de Edición de Ejemplo |
| 2023-12-21 | post_dfg | usuario3 | usuario4 | Razón de Edición de Ejemplo |
| 2023-12-24 | post_xyz | usuario5 | usuario6 | NULL |