تقرير لوحة التحكم - تعديلات المشاركات

هذا هو إصدار SQL من تقرير لوحة المعلومات لتعديلات المشاركات.

يعرض تقرير لوحة المعلومات هذا المشاركات التي تم تعديلها خلال نطاق تاريخي محدد، ويتضمن معلومات حول المحرر، ومؤلف المشاركة، وسبب تعديل المشاركة. تم تصميم هذا التقرير لمساعدة المسؤولين على مراقبة وفهم نشاط التعديل الذي يحدث داخل منتدياتهم، مع التركيز بشكل خاص على الحالات التي يقوم فيها مستخدمون آخرون غير المؤلفين الأصليين بإجراء تعديلات على المشاركات.

-- [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

شرح استعلام SQL

  • تعريف المعلمات:
    • يقبل الاستعلام معلمتين، :start_date و :end_date، اللتين تحددان نطاق التاريخ للتقرير. تقبل كلتا معلمتي التاريخ تنسيق التاريخ YYYY-MM-DD.
  • اختيار البيانات: تحدد عبارة SELECT الأعمدة التي ستظهر في التقرير النهائي. وتشمل هذه:
    • pr.created_at::date as day: تاريخ إنشاء مراجعة المشاركة، ويتم تحويلها إلى نوع date لإزالة جزء الوقت.
    • pr.post_id: معرف المشاركة التي تم تعديلها.
    • pr.user_id AS editor_user_id: معرف المستخدم الذي قام بالتعديل. تم تسميته مستعارًا باسم editor_user_id للتمييز بينه وبين مؤلف المشاركة الأصلية.
    • p.user_id AS author_user_id: معرف المستخدم الذي ألف المشاركة الأصلية، تم تسميته مستعارًا باسم author_user_id.
    • p.edit_reason: السبب المقدم للتعديل، إن وجد.
  • ربط الجداول: تتضمن عبارة FROM عبارة JOIN التي تجمع جدول post_revisions (pr) مع جدول posts (p). يتم الربط بناءً على الشرط الذي يتطابق فيه post_revisions.post_id مع posts.id، وبالتالي ربط المراجعة بتفاصيل المشاركة الأصلية.
  • تصفية البيانات: تطبق عبارة WHERE عدة عوامل تصفية على البيانات:
    • pr.created_at BETWEEN :start_date AND :end_date: تتضمن فقط مراجعات المشاركات التي تم إنشاؤها ضمن نطاق التاريخ المحدد بواسطة المعلمات.
    • pr.user_id > 0: يضمن أن المحرر هو مستخدم فعلي وليس عملية نظام (عادةً ما يشير معرف المستخدم 0 إلى عملية نظام).
    • pr.user_id <> p.user_id: يقوم بتصفية المراجعات التي أجراها المؤلف الأصلي للمشاركة، مع التركيز فقط على التعديلات التي أجراها مستخدمون مختلفون.
  • ترتيب النتائج: تقوم عبارة ORDER BY pr.created_at ASC بترتيب النتائج من الأقدم إلى الأحدث بناءً على الطابع الزمني لوقت إنشاء كل مراجعة مشاركة.

نتائج مثال

day post editor_user author_user edit_reason
2023-12-20 post_abc user1 user2 Example Edit Reason
2023-12-21 post_dfg user3 user4 Example Edit Reason
2023-12-24 post_xyz user5 user6 NULL
إعجاب واحد (1)