פעולה זו יוצרת שאילתת איחוד, אשר מצרפת את תוצאותיהן של שתי שאילתות בלתי-תלויות או טבלאות בלתי-תלויות או יותר.
תחביר
[TABLE] query1 UNION [ALL] [TABLE] query2 [UNION [ALL] [TABLE] queryn [ ... ]]
הפעולה UNION מורכבת משני חלקים:
| חלק | תיאור |
| query1-n | משפט SELECT , שם של שאילתה מאוחסנת או של טבלה מאוחסנת לפניהם באה מילת המפתח TABLE. |
הערות
באפשרותך למזג את תוצאותיהן של שתי שאילתות, טבלאות ומשפטי SELECT או יותר, בכל שילוב אפשרי בפעולת UNION בודדת. הדוגמה הבאה ממזגת טבלה קיימת בשם New Accounts עם משפט SELECT:
TABLE [New Accounts] UNION ALL
SELECT *
FROM Customers
WHERE OrderAmount > 1000;
כברירת מחדל, אין החזרה של רשומות כפולות בעת השימוש בפעולה UNION; אולם באפשרותך לכלול את המושא ALL כדי להבטיח שכל הרשומות יוחזרו. בדרך זו השאילתה גם פועלת מהר יותר.
באפשרותך להשתמש במשפטעל כל השאילתות בפעולת UNION לבקש את אותו מספר של שדות; עם זאת, השדות אינם צריכים להיות באותו גודל או מאותו סוג נתונים.
השתמש בכינויים רק במשפט SELECT הראשון, מאחר שמשפטים אחרים יתעלמו מהם. בפסוקית ORDER BY, הפנה לשדות לפי האופן בו נקראו במשפט SELECT הראשון.
הערות
- באפשרותך להשתמש בפסוקית GROUP BY או בפסוקית HAVING בכל ארגומנט שאילתה כדי לקבץ את הנתונים שהוחזרו.
- באפשרותך להשתמש בפסוקית ORDER BY בסוף ארגומנט השאילתה כדי להציג את הנתונים שהוחזרו בסדר מסויים.
דוגמה לפעולה UNION
דוגמה זו מאחזרת את השמות והערים של כל הספקים והלקוחות בברזיל.
דוגמה זו שולחת קריאה לפרוצדורה EnumFields, אותה באפשרותך למצוא בדוגמה למשפט SELECT.
Sub UnionX()
Dim dbs As Database, rst As Recordset
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Retrieve the names and cities of all suppliers
' and customers in Brazil.
Set rst = dbs.OpenRecordset("SELECT CompanyName," _
& " City FROM Suppliers" _
& " WHERE Country = 'Brazil' UNION" _
& " SELECT CompanyName, City FROM Customers" _
& " WHERE Country = 'Brazil';")
' Populate the Recordset.
rst.MoveLast
' Call EnumFields to print the contents of the
' Recordset. Pass the Recordset object and desired
' field width.
EnumFields rst, 12
dbs.Close
End Sub
|