عامل SQL UNION
يُستخدم عامل UNION لدمج نتائج استعلامين SELECT أو أكثر في نتيجة واحدة. يقوم UNION تلقائيًا بحذف الصفوف المكررة من النتيجة، بينما UNION ALL يحتفظ بكل الصفوف بما فيها المكررة.
الشروط اللازمة لاستخدام UNION:
- يجب أن تحتوي كل جملة SELECT ضمن UNION على نفس عدد الأعمدة.
- يجب أن تكون أنواع البيانات في الأعمدة متشابهة.
- يجب أن تكون الأعمدة في كل جملة SELECT بنفس الترتيب.
بناء الجملة (Syntax)
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
ملاحظة: أسماء الأعمدة في النتيجة عادةً تكون مساوية لأسماء الأعمدة في أول جملة SELECT.
قاعدة بيانات التجربة
في هذا الدرس نستخدم قاعدة البيانات الشهيرة Northwind التي تحتوي على جدول العملاء (Customers) والموردين (Suppliers).
جدول Customers
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
جدول Suppliers
| SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | London | EC1 4SD | UK |
| 2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
| 3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
مثال على SQL UNION
الاستعلام التالي يعرض جميع المدن (قيم مميزة فقط) من جدول Customers و Suppliers:
SELECT City FROM Customers UNION SELECT City FROM Suppliers ORDER BY City;
UNION مع شرط WHERE
يمكنك استخدام شرط WHERE لتحديد بيانات معينة من كلا الجدولين:
SELECT City, Country FROM Customers WHERE Country='Germany' UNION SELECT City, Country FROM Suppliers WHERE Country='Germany' ORDER BY City;
مثال آخر على UNION مع استخدام Alias
الاستعلام التالي يعرض جميع العملاء والموردين مع تحديد نوعهم:
SELECT 'Customer' AS Type, ContactName, City, Country FROM Customers UNION SELECT 'Supplier', ContactName, City, Country FROM Suppliers;
ملاحظة: AS Type هو اسم مستعار للعمود لتوضيح نوع السجل.
تعليقات
إرسال تعليق