البرمجة

توحيد بيانات قواعد البيانات في MySQL: استعلام معقد يجمع بين المقالات، الوسوم، والتعليقات

في عمليات استعلام قواعد البيانات MySQL، يمكنك الجمع بين بيانات من جداول متعددة باستخدام عبارات JOIN. في حالتك، تحتاج إلى استخدام عبارة JOIN لربط جدول ARTICLE مع ARTICLE_has_TAG، TAG، POST_ARTICLE، و USER. يمكن القيام بذلك من خلال استخدام العلاقات الرئيسية بين هذه الجداول.

للحصول على جميع البيانات التي تحتاجها، يمكنك استخدام الاستعلام التالي:

sql
SELECT ARTICLE.ID_ARTICLE, ARTICLE.TITLE_ARTICLE, ARTICLE.SUBTITLE_ARTICLE, ARTICLE.REFEREE_ARTICLE, ARTICLE.LINEUP_ARTICLE, ARTICLE.LINEUP_OPPONENT_ARTICLE, ARTICLE.CARD_ARTICLE, ARTICLE.CARD_OPPONENT_ARTICLE, ARTICLE.CHANGE_ARTICLE, ARTICLE.CHANGE_OPPONENT_ARTICLE, ARTICLE.GOALS_ARTICLE, ARTICLE.CONTENT_ARTICLE, ARTICLE.CREATED_ARTICLE, ARTICLE.IMAGE_ARTICLE, ARTICLE.MATCH_ID, ARTICLE.USER_ID, TAG.NAME_TAG, COUNT(DISTINCT POST_ARTICLE.ID_POST_ARTICLE) AS COMMENT_COUNT, USER.USERNAME_USER FROM ARTICLE JOIN ARTICLE_has_TAG ON ARTICLE.ID_ARTICLE = ARTICLE_has_TAG.ARTICLE_ID JOIN TAG ON ARTICLE_has_TAG.TAG_ID = TAG.ID_TAG LEFT JOIN POST_ARTICLE ON ARTICLE.ID_ARTICLE = POST_ARTICLE.ARTICLE_ID JOIN USER ON ARTICLE.USER_ID = USER.ID_USER GROUP BY ARTICLE.ID_ARTICLE;

هذا الاستعلام يقوم بربط جدول ARTICLE بجدول ARTICLE_has_TAG و TAG باستخدام JOIN، ويستخدم LEFT JOIN لربط جدول POST_ARTICLE. يتم استخدام GROUP BY لتجميع البيانات حسب ID_ARTICLE.

بالتفصيل، يتم اختيار الحقول من ARTICLE و USER، واسم الوسم (TAG)، وعدد التعليقات (COMMENT_COUNT) باستخدام COUNT و DISTINCT لتجنب الاحتساب المزدوج للتعليقات في حال وجود أكثر من تعليق لنفس المقال.

يمكنك تكييف هذا الاستعلام وفقًا لاحتياجاتك الدقيقة، ويمكنك استخدامه كأساس لاستعلامات أكثر تعقيدا حسب متطلبات مشروعك.

المزيد من المعلومات

بالطبع، يمكننا التوسع أكثر في تفسير الاستعلام وتوضيح بعض النقاط الإضافية. في الاستعلام السابق، قمنا بتضمين معلومات هامة حول المقالات، الوسوم، والتعليقات. دعنا نلقي نظرة عميقة على بعض العناصر المهمة في الاستعلام:

  1. استخدام JOIN:

    • في الجزء الأول من الاستعلام، قمنا بعمل JOIN بين جدولي ARTICLE و ARTICLE_has_TAG باستخدام JOIN ARTICLE_has_TAG ON ARTICLE.ID_ARTICLE = ARTICLE_has_TAG.ARTICLE_ID. هذا يربط كل مقالة بالوسوم المرتبطة بها.
    • ثم قمنا بعمل JOIN مع جدول TAG باستخدام JOIN TAG ON ARTICLE_has_TAG.TAG_ID = TAG.ID_TAG. هذا يتيح لنا الوصول إلى أسماء الوسوم المرتبطة بكل مقالة.
  2. COUNT و DISTINCT:

    • استخدمنا COUNT(DISTINCT POST_ARTICLE.ID_POST_ARTICLE) لحساب عدد التعليقات لكل مقالة. DISTINCT يضمن أننا لا نحسب التعليقات المكررة، وهو خاصة مهم عند القيام بعمليات JOIN.
  3. LEFT JOIN:

    • قمنا باستخدام LEFT JOIN عند الربط مع جدول POST_ARTICLE. هذا يعني أنه حتى إذا لم تكن هناك تعليقات للمقالة، سيظهر السطر في النتيجة وسيكون لدينا COMMENT_COUNT مع قيمة 0.
  4. GROUP BY:

    • استخدمنا GROUP BY ARTICLE.ID_ARTICLE لتجميع البيانات حسب معرف المقالة. هذا يتيح لنا عرض معلومات فريدة لكل مقالة.
  5. تحسين القراءة:

    • قمنا بتجميع الحقول المختلفة لتحسين قراءة الاستعلام. هذا يجعل النتائج أكثر وضوحًا ويسهل فهمها.

تذكير: قبل تنفيذ أي استعلام على قاعدة البيانات الحية، يجب دائمًا اختباره على بيانات افتراضية أو نسخة اختبار لتجنب أي تأثير على البيانات الحية.

زر الذهاب إلى الأعلى