Union and Union
All
استعلام
Union استعلام يستخدم عامل UNION لجمع نتائج استعلامين محددين أو أكثر. تقوم Union بإنشاء استعلام يقوم بدمج نتائج اثنين أو أكثر من الجداول أو الاستعلامات
المستقلة.
شكل
جملة Union:
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
شكل
جملة Union All:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
المثال التالي
يوضح استخدام Union All:
جدول
tblCashCustomer:
جدول tblInstallmentCustomer:
أمر
Union All Command:
SELECT * FROM
tblCashCustomer
UNION
ALL
SELECT * FROM
tblInstallmentCustomer
الأمر Union
All Command يقوم بإرجاع
كافة السجلات Records من الجداول حتى بتواجد بها تكرار ويقوم
بدمجها مع بعض ولكن هناك بعض القيود التي يجب الالتزام بها يجب ان تكون عدد ال fields المستعلم عنها متساوي, استخدم الأسماء المستعارة Alias فقط في جملة
SELECT الأخيرة لأنه يتم تجاهلها في أي جمل أخرى, وايضا في جملة ORDER BY يتم الاشارة
إلى ال fields باستخدام أسمائها في جملة SELECT الأخيرة.
أمر
Union Command:
SELECT *FROM tblCashCustomer
UNION
SELECT *
FROM tblInstallmentCustomer
الأمر Union
Command يقوم بإرجاع
كافة السجلات Records من الجداول دون تكرار بالبيانات ويقوم
بدمجها مع بعض مع نفس القيود مثل Union
All المذكورة سابقاً.
نلاحظ في جملة Union السابقة تم حذف التكرار في السجلات Sara لوجود تكرار
بها نفس رقم ال ID والاسم Name و الايميل Email.
الفرق
بين Union و Union All
الأمر Union يقوم بحذف التكرار
من السجلات Rows ... ولكن Union All لا يقوم بذلك.
الأمر Union يستخدم
الآمر Distinct لحذف التكرارات لذلك فهو ابطئ من Union All.
الجمل التالية
خطأ:
* خطأ عدد ال fields.
SELECT ID,Name FROM tblCashCustomer
UNION
All
SELECT ID,Name,Email FROM tblInstallmentCustomer
هنا عدد ال fields المختارة لا
يتطابق في الجملة الأولى بها عدد field
2 , والجملة
الثانية بها عدد fields3.
Msg 205, Level 16, State 1, Line 1
All queries combined using a UNION, INTERSECT or EXCEPT
operator must have an equal number of expressions in their target lists.
* خطأ تطابق الحقول fields مع بعضها.
SELECT Email,NAME,ID FROM tblCashCustomer
UNION
All
SELECT ID,Name,Email FROM tblInstallmentCustomer
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the nvarchar value
'sara@gmail.com' to data type int.
* خطأ في الترتيب.
SELECT ID,Name,Email FROM tblCashCustomer
ORDER
BY Name
UNION
SELECT ID,Name,Email FROM tblInstallmentCustomer
هنا تم استخدام
الجملة ORDER BY بعد جملة ال SELECT الأولى.
Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'UNION'.
ليست هناك تعليقات:
إرسال تعليق
يسعدني إرسال تعليقاتكم وأسئلتكم واقتراحاتكم