منشور

سلسلة دروس SQL| عبارة UNION

هذه المقالة جزء من سلسلة دروس SQL، يمكنك الاطلاع على الفهرس

عبارة UNION في SQL

تُستخدم عبارة UNION لدمج مجموعة النتائج لعبارتي SELECT أو أكثر.

  • يجب أن يكون لكل عبارة SELECT داخل UNION نفس عدد الأعمدة

  • يجب أن تحتوي الأعمدة أيضًا على أنواع بيانات متشابهة

  • يجب أن تكون الأعمدة في كل عبارة SELECT بنفس الترتيب

بناء جملة UNION

1
2
3
4
5
6
7
        SELECT column_name(s) FROM table1

        UNION

        SELECT column_name(s) FROM table2;

بناء جملة UNION ALL

تعرض عبارة UNION القيم المختلفة فقط (دون تكرار) بشكل افتراضي. استخدم UNION ALL للسماح بقيم مكررة:

1
2
3
4
5
6
7
        SELECT column_name(s) FROM table1

        UNION ALL

        SELECT column_name(s) FROM table2;

ملاحظة: عادةً ما تكون أسماء الأعمدة في مجموعة النتائج مساوية لأسماء الأعمدة في عبارة SELECT الأولى في UNION.

استعراض قاعدة البيانات

سنستخدم في هذا الدرس قاعدة البيانات النموذجية المعروفة Northwind.

فيما يلي تحديد من جدول “العملاء”:

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

و تحديد من جدول “المُوَرِّدين”:

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

مثال عن UNION

تُرجع عبارة SQL التالية جميع المدن (القيم المختلفة فقط) من كلا جدولي “العملاء” و”المورِّدين”:

1
2
3
4
5
6
7
8
9
        SELECT City FROM Customers

        UNION

        SELECT City FROM Suppliers

        ORDER BY City;

ملاحظة: إذا كان لدى بعض العملاء أو الموردين نفس المدينة ، فسيتم إدراج كل مدينة مرة واحدة فقط ، لأن UNION تحدد القيم المميزة فقط. استخدم UNION ALL لتحديد القيم المكررة أيضًا!

مثال عن UNION ALL

تقوم عبارة SQL التالية بإرجاع المدن (القيم المكررة أيضًا) من كل من جدولي “العملاء” و”الموردين”:

1
2
3
4
5
6
7
8
9
        SELECT City FROM Customers

        UNION ALL

        SELECT City FROM Suppliers

        ORDER BY City;

عبارة UNION مع WHERE في SQL

تقوم عبارة SQL التالية بإرجاع المدن الألمانية (القيم المختلفة فقط) من كل من جدولي “العملاء” و”الموردين”:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

        SELECT City, Country FROM Customers

        WHERE Country='Germany'

        UNION

        SELECT City, Country FROM Suppliers

        WHERE Country='Germany'

        ORDER BY City;


عبارة UNION ALL مع WHERE في SQL

تقوم عبارة SQL التالية بإرجاع المدن الألمانية (القيم المكررة أيضًا) من كل من جدولي “العملاء” و”الموردين”:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

        SELECT City, Country FROM Customers

        WHERE Country='Germany'

        UNION ALL

        SELECT City, Country FROM Suppliers

        WHERE Country='Germany'

        ORDER BY City;

مثال آخر عن UNION

يسرد بيان SQL التالي كافة العملاء والموردين:

1
2
3
4
5
6
7
8
9
10
11
        SELECT 'Customer' As Type, ContactName, City, Country

        FROM Customers

        UNION

        SELECT 'Supplier', ContactName, City, Country

        FROM Suppliers;

لاحظ أن “AS Type” أعلاه عبارة عن اسم مستعار. تُستخدم الأسماء المستعارة في SQL لإعطاء جدول أو عمود اسمًا مؤقتًا ويكون صالح فقط أثناء تنفيذ الأمر. لذلك أنشأنا هنا عمودًا مؤقتًا باسم “Type” والذي يوضح فيما إذا كانت جهة الاتصال هي “عميل” أو “مورد”.

التالي: عبارة GROUP BY

هذا المنشور تحت ترخيص CC BY 4.0 بواسطة المؤلف.