SQLدمج الجداول في جدول واحد
- مفهوم دمج الجداول في جدول واحد
- تجهيز قاعدة البيانات التي سنطبق عليها
- مثال حول دمج بيانات الجداول باستخدام UNION
- مثال حول دمج بيانات الجداول باستخدام UNION ALL
مفهوم دمج الجداول في جدول واحد
في البداية, سبق و تعلمنا أننا نستخدم الأمر SELECT لجلب القيم من الجدول, سواء أردنا جلبها كلها أو تحديد القيم التي نريد جلبها منها و في النهاية النتيجة النهائية سيتم إرجاعها لنا كجدول.
في حال أردت تنفيذ أمرين SELECT أو أكثر و من ثم وضع نتيجتهم في جدول واحد فقط يمكنك استخدام العامل UNION حتى تدمجهم مع بعض.
إذاً العامل UNION يستخدم لدمج بيانات الأعمدة التي يتم جلبها بواسطة الأمر SELECT في جدول واحد.
شروط دمج قيم الجداول
يجب مراعاة الشروط التالية حتى يسمح لك بدمج قيم الجداول في جدول واحد:
- عدد أعمدة الجداول التي نريد دمجها يجب أن يكون متطابق, فمثلاً يكون الجدولين الذين نريد دمجهما يتألفان من 3 أعمدة.
- أعمدة الجداول التي سيتم دمجها يجب أن تكون من نفس النوع, فمثلاً لا يمكنك دمج عمود نوعه INT مع عمود نوعه DATE.
- يجب أن تراعي ترتيب الأعمدة التي تريد دمجها مع بعضها, أي يجب أن تجلبها بنفس الترتيب.
أنواع الدمج
عند دمج قيم الجداول, فمن الطبيعي أن يكون هناك أسطر قيمهما مكررة في الجداول خاصةً إن كانت تتضمن عدد كبير من الأسطر.
لهذا السبب قاعدة البيانات تتيح لك تحديد ما إن كنت تريد أن يحتوي الجدول الذي سينتج عند دمج قيم الجداول على قيم مكررة أم لا.
إذا لم ترد وجود قيم مكررة, قم بدمج الجداول بواسطة العامل UNION.
إذا كان لا يهمك ما إن كان يوجود قيم مكررة أم لا, قم بدمج الجداول بواسطة العامل UNION ALL.
الشكل العام لدمج الجداول
في حال كنت تريد دمج قيم الجداول مع عدم وضع قيم مكررة.
في حال كنت تريد دمج قيم الجداول مع السماح بوجود قيم مكررة.
تجهيز قاعدة البيانات التي سنطبق عليها
قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash
و تنشئ فيها جدول إسمه employees
يحتوي على بيانات 10 موظفين.
الإستعلام
بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash
و إنشاء الجدولين employees
و customers
بداخلها.
قم بالنقر على إسم قاعدة البيانات harmash
من القائمة اليسرى حتى تبدأ بالتعامل معها و تطبيق ما ستتعلمه في هذا الدرس.
الجدول employees
يتضمن معلومات 5 موظفين كالتالي.
id | first_name | last_name | salary |
---|---|---|---|
1 | Ahmad | Alhazem | 800.00 |
2 | Rami | Asaadi | 750.00 |
3 | Said | Alnaja | 900.00 |
4 | Noura | Jamali | 845.00 |
5 | Amani | Sarrouf | 1000.00 |
الجدول customers
يتضمن معلومات 5 عملاء كالتالي.
id | first_name | last_name | |
---|---|---|---|
1 | Ahmad | Alhazem | ahmad@example |
2 | Rami | Asaadi | rami@example |
3 | Mostafa | Shawki | mostafa@example |
4 | Jana | Alkassem | jana@example |
5 | Houssam | Zahrani | houssm@example |
لاحظ أن أول سطرين في الجدولين employees
و customers
عندهما نفس قيمة id
و first_name
و last_name
.
تعمدنا وضع القيم بهذا الشكل حتى تلاحظ كيف سيتم دمج قيم الجدولين employees
و customers
عند استخدام UNION و عند استخدام UNION ALL.
مثال حول دمج بيانات الجداول باستخدام UNION
الإستعلام التالي فكرته إحضار البيانات الموجودة في ثلاث أعمدة في الجدولين employees
و customers
, مع عدم إحضار قيم مكررة.
هذا الإستعلام سيتنفذ على ثلاث مراحل كالتالي:
- يجلب
id
وfirst_name
وlast_name
كل موظف موجود في الجدولemployees
. - يجلب
id
وfirst_name
وlast_name
كل عميل موجود في الجدولcustomers
. - يدمج النتيجتين السابقتين في جدول واحد لا يحتوي على أي قيم مكررة.
الإستعلام
سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
لاحظ أن الجدول لا يحتوي على أسطر فيها نفس القيم.
id | first_name | last_name |
---|---|---|
1 | Ahmad | Alhazem |
2 | Rami | Asaadi |
3 | Mostafa | Shawki |
4 | Jana | Alkassem |
5 | Houssam | Zahrani |
3 | Said | Alnaja |
4 | Noura | Jamali |
5 | Amani | Sarrouf |
مثال حول دمج بيانات الجداول باستخدام UNION ALL
الإستعلام التالي فكرته إحضار البيانات الموجودة في ثلاث أعمدة في الجدولين employees
و customers
, و لا يهم إن كانت النتيجة تحتوي على قيم مكررة.
هذا الإستعلام سيتنفذ على ثلاث مراحل كالتالي:
- يجلب
id
وfirst_name
وlast_name
كل موظف موجود في الجدولemployees
. - يجلب
id
وfirst_name
وlast_name
كل عميل موجود في الجدولcustomers
. - يدمج النتيجتين السابقتين في جدول واحد.
الإستعلام
سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
لاحظ أن الجدول يحتوي على أسطر فيها نفس القيم.
id | first_name | last_name |
---|---|---|
1 | Ahmad | Alhazem |
2 | Rami | Asaadi |
3 | Mostafa | Shawki |
4 | Jana | Alkassem |
5 | Houssam | Zahrani |
1 | Ahmad | Alhazem |
2 | Rami | Asaadi |
3 | Said | Alnaja |
4 | Noura | Jamali |
5 | Amani | Sarrouf |