تستخدم معظم استعلامات SQL عبارة واحدة تقوم بإرجاع البيانات من جدول واحد أو أكثر. يتيح لك SQL أيضًا تشغيل استعلامات منفصلة متعددة في نفس الوقت وعرض النتيجة كمجموعة بيانات واحدة. عادةً ما تسمى هذه الاستعلامات المدمجة بالصلات أو الاستعلامات المعقدة.
يتم دمج استعلامات SQL باستخدام عامل التشغيل UNION. للقيام بذلك، تحتاج إلى تحديد كل طلب SELECT ووضع الكلمة الأساسية UNION بينهما. لا يوجد حد لعدد استخدامات عامل التشغيل UNION في استعلام عام واحد. في القسم السابق، لاحظنا أن MS Access ليس لديه القدرة على إنشاء اتحاد خارجي كامل، والآن سنرى كيف يمكن تحقيق ذلك من خلال عامل التشغيل UNION.
Run SQLSELECT *
FROM Sumproduct
LEFT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
UNION
SELECT *
FROM Sumproduct
RIGHT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
نرى أن الاستعلام عرض كل الأعمدة من الجدول الأول ومن الجدول الثاني، بغض النظر عما إذا كانت كافة السجلات لها نظيرات في جدول آخر.
ومن الجدير بالذكر أيضًا أنه في كثير من الحالات، بدلاً من UNION، يمكننا استخدام جملة WHERE مع العديد من الشروط، والحصول على نتيجة مماثلة. ومع ذلك، من خلال UNION، تبدو السجلات أكثر إيجازًا ووضوحًا.
من الضروري أيضًا اتباع قواعد معينة عند كتابة الاستعلامات المجمعة:
يقوم الاستعلام الذي يحتوي على UNION تلقائيًا بإزالة كافة الصفوف المكررة من مجموعة نتائج الاستعلام (بمعنى آخر، يتصرف مثل جملة WHERE مع شروط متعددة في عبارة SELECT واحدة). هذا هو السلوك الافتراضي لعامل التشغيل UNION، ولكن يمكننا تغييره إذا أردنا ذلك. ولهذا يجب علينا استخدام عامل التشغيل UNION ALL بدلاً من UNION.
يتم فرز نتائج عبارة SELECT باستخدام عبارة ORDER BY. عند دمج الاستعلامات باستخدام UNION، يمكن استخدام جملة ORDER BY واحدة فقط، ويجب وضعها في عبارة SELECT الأخيرة. في الواقع، من الناحية العملية، ليس من المنطقي فرز جزء من النتائج بترتيب واحد، والجزء الآخر بترتيب آخر. لذلك، لا يُسمح باستخدام جمل متعددة ORDER BY.