اختيار ودمج الأعمدة من جدولين في SQL

عند العمل مع قواعد البيانات، من الشائع مواجهة حالات تحتاج فيها إلى استرجاع بيانات من جداول متعددة. تنشأ إحدى هذه السيناريوهات عندما يكون لديك جدولان يحتويان على عمود مشترك. في هذا المنشور، نستكشف كيفية اختيار عمود محدد، ColumnA، من جدولين مختلفين—Table1 وTable2—وإرجاعه كجدول نتائج واحد.

المشكلة

افترض أن لديك جدولين في قاعدة بياناتك:

  • Table1 يحتوي على عمود باسم ColumnA مع القيم:

    • a
    • b
    • c
  • Table2 يحتوي أيضًا على عمود باسم ColumnA مع القيم:

    • d
    • e
    • f

هدفك هو استخراج جميع مثيلات ColumnA من كلا الجدولين في عمود واحد في مجموعة النتائج. هذا يعني أنك تريد أن تظهر البيانات كالتالي:

a
b
c
d
e
f

الحل

لتحقيق ذلك، يمكننا استخدام استعلام SQL مع عامل UNION. يسمح لنا عامل UNION بدمج نتائج اثنين أو أكثر من جمل SELECT في مجموعة نتائج واحدة.

مثال لاستعلام SQL

إليك استعلام SQL الذي يحقق هذه المهمة:

SELECT ColumnA FROM Table1 
UNION 
SELECT ColumnA FROM Table2 
ORDER BY 1;

تحليل الاستعلام

  1. اختيار الأعمدة:

    • نبدأ بـ SELECT ColumnA FROM Table1 لاستخراج جميع الإدخالات من ColumnA في Table1.
    • الجزء التالي، SELECT ColumnA FROM Table2، يقوم بنفس الشيء بالنسبة لـ Table2.
  2. دمج النتائج:

    • يقوم عامل UNION بدمج مجموعات النتائج من كلا جملتي SELECT.
    • لاحظ أنه حسب الافتراضي، يقوم UNION بإزالة القيم المكررة، لذا إذا كان هناك أي تداخل في قيم ColumnA بين الجدولين، فإنها ستظهر مرة واحدة فقط في الإخراج النهائي.
  3. ترتيب النتائج:

    • عبارة ORDER BY 1 ترتب الإخراج النهائي حسب العمود الأول، والذي، في هذه الحالة، هو ColumnA.

متى تستخدم UNION ALL

إذا كنت متأكدًا من أن القيم في ColumnA من Table1 وTable2 لن تتداخل أبدًا، فكر في استخدام UNION ALL بدلاً من UNION. هذه الخيار يتجنب عبء التحقق من التكرارات ويمكن أن يحسن الأداء:

SELECT ColumnA FROM Table1 
UNION ALL 
SELECT ColumnA FROM Table2 
ORDER BY 1;

ملخص

باختصار، يمكن التعامل بكفاءة مع دمج البيانات من جداول متعددة في SQL باستخدام عامل UNION. هذه الممارسة لا تسهل فقط استرجاع البيانات ولكن تجعل أيضًا استعلامات قاعدة البيانات لديك أكثر قوة ومرونة.

الآن يمكنك بسهولة استخراج ودمج الأعمدة من جداول مختلفة، مما يعزز قدرتك على إدارة وتحليل بياناتك بشكل فعال!