شرح sql بالعربي – دمج البيانات من استعلامين بإستخدام Union و Intersect و Except شرح sql بالعربي – دمج البيانات من استعلامين بإستخدام Union و Intersect و Except - اقرا معي وتعلم على الانترنت

شرح sql بالعربي – دمج البيانات من استعلامين بإستخدام Union و Intersect و Except

السلام عليكم ورحمة الله وبركاته كل عام وانتم بخير احبابنا احباب مدونة اقرا معي وتعلم على الانترنت نتمنى ان تفييدكم هذه المدونة بكل ما يعود عليكم بالمنفعة ...اخذنا في السابق استعمال الاستعلامات الفرعية ضمن شرط where اليوم نأخذ معاً دمج البيانات من استعلامين بإستخدام Union و Intersect و Except ...

شرح sql بالعربي



تستخدم Union و Intersect و Except(Minus) لدمج استعلامين .
وتختلف نتائج هذا الدمج بحسب التعبير المستخدم .
تستخدم التعابير السابقة وفق الصيغة
select columnA,columnB from tableA
التعبير
Select columnC,columnD from tableB;

وعملية الدمج تتطلب شروط وهي :
ان يكون عدد الحقول التي يعيدها كلاً من الاستعلامين متساوياً .
ان يكون نمط البيانات في تلك الحقول متطابقاً بين الاستعلامين .


بالنتيجة يستخدم الدمج في حالة الجداول التي تحتوي بيانات مختلفة ولكن لها هيكلية متشابهة .

اولاُ التعبير UNION

يستخدم لدمج البيانات التي يعيدها استعلامين ..ويستخدم وفق الصيغة
select columnA,columnB from tableA
UNION
Select columnC,columnD from tableB;

في هذه الحالة سيتم إدراج السجلات المعادة من الاستعلام الأول مع السجلات المعادة من الاستعلام الثاني، مع إهمال السجلات المكررة.
في حال أردنا دمج جميع السجلات المعادة من الاستعلام الأول مع جميع السجلات المعادة من الاستعلام الثاني بدون إهمال نستخدم التعبير Union All بدلا من Union .

مثال:

ليكن لدينا جدول اسمة Employees يحتوي على اسماء employeeName ودرجات employeeGrade اختبار اللغة الانجليزية للعاملين في شركة ، وليكن لدينا جدول اخر اسمة Managers يحتوي على اسماء managerName ودرجات managerGrade مدراء الاقسام الفروع في الشركة نفسها .
لتصدير التقرير الشامل حول امتحان اللغة الانجليزية والذي تظهر فيه اسماء الناجحين في فحص اللغة علماً ان درجة النجاح هي 50 للموظفين و60 للمدراء نكتب الاستعلام كالتالي:

Select employeeName, employeeGrade from Employees
where employeeGrade >50
Union
Select managerName, managerGrade from Managers
where managerGrade>60;


ثانياً التعبير Intersect

يستخدم لاستعادة السجلات التي تظهر في كل من السجلات التي يعيدها الاستعلام الاول والسجلات التي يعيدها من الاستعلام الثاني وياخذ الصيغة التالية
select columnA,columnB from tableA
Intersect
Select columnC,columnD from tableB;

مثال

لدينا جدولين الاول Theoretical يحتوي على قائمة اسماء Name ودرجات Mark المتقدمين لفحص قيادة السيارات – الجزء النظري ويحتوي الثاني والذي اسمة Practical على اسماء Name ودرجات Mark المتقدمين لفحص قيادة السيارات – الجزء العملي .
لاظهار قائمة بأسماء الناجحين في الاختبارين معاً لإعطائهم شهادة قيادة سيارة نكتب الاستعلام التالي:
Select Theoretical.Name from Theoretical where Theoretical.Mark>50
Intersect
Select Practical.Name from Practical where Practical.Mark>50;



ملاحظة :
تدعم قواعد البيانات DB2 و Oracle فقط التعبير Intersect .


ثالثاً التعبير Except :

يستخدم التعبير Except لإعادة السجلات التي تظهر في نتيجة الاستعلام الاول ولا تظهر في نتيجة الاستعلام الثاني ويتستخدم الصيغة التالية:
select columnA,columnB from tableA
Except
Select columnC,columnD from tableB;


انتبه:

في Oracle يستخدم التعبير Minus بدلا من Except .
التعبير (Minus) Except مدعوم فقط في قواعد بيانات DB2 و ر Oracle

مثال :

يعتمد مركز تأجير افلام لحفظ معلوماته على جدولين الاول اسمة Movies يحتوي على قائمة بأسماء الافلام movieName ونوعها movueType ورقمها movieNumber ويحتوي الجدول الثاني الذي اسمة rentMovies على قائمة بأسماء الافلام المؤجرة حاليا ً مع رقمها ....
لكي تظهر قائمة بجميع الافلام من النوع Action’ غير المؤجرة نستخدم الاستعلام التالي :
Select movies.movieName, Movies.movieNumber from Movies
where movieType=’Action’
Minus
Select rentMovies.movieName, rentMovies.movieNumber from rentMovies;

اكتفي بهذا القدر ونلتقي في التدوين القادم نأمل من الله ان نكون وفقنا في الطرح ... لا تنسى ان تشترك في مدونتنا وقناتنا وكذلك صفحتنا على الفيس بوك
ومشاركة هذا مع اصدقائك

دمت بخير 
شارك الموضوع
تعليقات
محتوى قد يهمك

.