هذا هو إصدار 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 |