مفهوم دمج الجداول في جدول واحد
في البداية, سبق و تعلمنا أننا نستخدم الأمر SELECT
لجلب القيم من الجدول, سواء أردنا جلبها كلها أو تحديد القيم التي نريد جلبها منها و في النهاية النتيجة النهائية سيتم إرجاعها لنا كجدول.
في حال أردت تنفيذ أمرين SELECT
أو أكثر و من ثم وضع نتيجتهم في جدول واحد فقط يمكنك استخدام العامل UNION
حتى تدمجهم مع بعض.
إذاً العامل UNION
يستخدم لدمج بيانات الأعمدة التي يتم جلبها بواسطة الأمر SELECT
في جدول واحد.
شروط دمج قيم الجداول
يجب مراعاة الشروط التالية حتى يسمح لك بدمج قيم الجداول في جدول واحد:
- عدد أعمدة الجداول التي نريد دمجها يجب أن يكون متطابق, فمثلاً يكون الجدولين الذين نريد دمجهما يتألفان من 3 أعمدة.
- أعمدة الجداول التي سيتم دمجها يجب أن تكون من نفس النوع, فمثلاً لا يمكنك دمج عمود نوعه
INT
مع عمود نوعهDATE
. - يجب أن تراعي ترتيب الأعمدة التي تريد دمجها مع بعضها, أي يجب أن تجلبها بنفس الترتيب.
أنواع الدمج
عند دمج قيم الجداول, فمن الطبيعي أن يكون هناك أسطر قيمهما مكررة في الجداول خاصةً إن كانت تتضمن عدد كبير من الأسطر.
لهذا السبب قاعدة البيانات تتيح لك تحديد ما إن كنت تريد أن يحتوي الجدول الذي سينتج عند دمج قيم الجداول على قيم مكررة أم لا.
إذا لم ترد وجود قيم مكررة, قم بدمج الجداول بواسطة العامل UNION
.
إذا كان لا يهمك ما إن كان يوجود قيم مكررة أم لا, قم بدمج الجداول بواسطة العامل UNION ALL
.
الشكل العام لدمج الجداول
في حال كنت تريد دمج قيم الجداول مع عدم وضع قيم مكررة.
SELECT column_name(s) FROM table1 -- هنا نحدد أسماء الأعمدة التي نريد جلبها بالترتيب من الجدول الأول UNION -- في جدول واحد مع عدم وضع قيم مكررة SELECT سيقوم بدمج نتيجة الأمرين UNION العامل SELECT column_name(s) FROM table2; -- هنا نحدد أسماء الأعمدة التي نريد جلبها بالترتيب من الجدول الثاني
في حال كنت تريد دمج قيم الجداول مع السماح بوجود قيم مكررة.
SELECT column_name(s) FROM table1 -- هنا نحدد أسماء الأعمدة التي نريد جلبها بالترتيب من الجدول الأول UNION ALL -- في جدول واحد مع السماح بوجود قيم مكررة SELECT سيقوم بدمج نتيجة الأمرين UNION ALL العامل SELECT column_name(s) FROM table2; -- هنا نحدد أسماء الأعمدة التي نريد جلبها بالترتيب من الجدول الثاني