با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره آموزش کامل SQL را دنبال می کنند. ممکن است در مواقعی لازم شود. نتایج دو یا چند دستور جداگانه در SQL را با هم ترکیب کنید. البته دستور IN در SQL، تقریبا مشابه این کار را انجام می دهد. اما این دستور بیشتر برای ایجاد SELECT های تودرتو و ارتباط بین دو جدول استفاده می شود. شما می توانید با استفاده از دستور UNION، علاوه بر ترکیب دو دستور کاملا جداگانه در SQL، مدیریت و تسلط بهتری روی نتایج، داشته باشید. برای آشنایی بیشتر و درک بهتر این موضوع در ادامه ی آموزش آشنایی با عملگر UNION در SQL و دستور UNION ALL در SQL ، با ما همراه باشید.
عملگر UNION برای ترکیب نتایج دو یا چند دستور SELECT در SQL ، استفاده می شود.
قبل از استفاده از عملگر UNION ، برای ترکیب نتایج SELECT ها، باید به نکات زیر توجه داشته باشید:
ساختار دستور UNION:
1 2 3 | SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2; |
ساختار دستور UNION ALL:
1 2 3 | SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2; |
نکته: نام فیلدها در نتایج اجرای دستور، با نام آن ها در خود دستور UNION قبل از اجرای آن، برابر است.
در این قسمت، به بخشی از رکوردهای دو جدول که در مثال های این آموزش، از آنها، استفاده خواهیم کرد، اشاره می کنیم.
بخشی از رکوردهای جدول “Customers” :
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
۱ | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | ۱۲۲۰۹ | Germany |
۲ | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | ۰۵۰۲۱ | Mexico |
۳ | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | ۰۵۰۲۳ | Mexi |
بخشی از رکوردهای جدول “Suppliers” :
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
۱ | Exotic Liquid | Charlotte Cooper | ۴۹ Gilbert St. | London | EC1 4SD | UK |
۲ | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | ۷۰۱۱۷ | USA |
۳ | Grandma Kelly’s Homestead | Regina Murphy | ۷۰۷ Oxford Rd. | Ann Arbor | ۴۸۱۰۴ | USA |
مثال زیر فیلد City دو جدول Customers و Suppliers ، که مقادیر فیلد City در آن ها متفاوت است را انتخاب می کند:
1 2 3 4 | SELECT City FROM Customers UNION SELECT City FROM Suppliers ORDER BY City; |
نکته: اگر رکوردهایی در دو جدول Customers و Suppliers دارای مقدار فیلد برابر باشند. دستور UNION فقط یکی از آن رکوردها را انتخاب کرده و نمایش می دهد. چراکه UNION ، مقادیر تکراری را انتخاب نمی کند.
برای اینکه مقادیر تکراری نیز نمایش داده شوند، باید از دستور UNION ALL استفاده کنید.
مثال زیر تمام فیلدهای City از دو جدول Customers و Suppliers، جتی اگر مقادیر تکراری داشته باشند را انتخاب می کند:
1 2 3 4 | SELECT City FROM Customers UNION ALL SELECT City FROM Suppliers ORDER BY City; |
مثال زیر ، فیلدهای City دو جدول Customers و Suppliers ، را زمانی انتخاب می کند. که مقدار فیلد Country آنها برابر با “Germany” و مقادیر تکراری را نیز در نظر نمی گیرد:
1 2 3 4 5 6 | SELECT City, Country FROM Customers WHERE Country='Germany' UNION SELECT City, Country FROM Suppliers WHERE Country='Germany' ORDER BY City; |
مثال زیر ، فیلدهای City دو جدول Customers و Suppliers ، را زمانی انتخاب می کند. که مقدار فیلد Country آنها برابر با “Germany” و مقادیر تکراری را نیز انتخاب می کند:
1 2 3 4 5 6 | SELECT City, Country FROM Customers WHERE Country='Germany' UNION ALL SELECT City, Country FROM Suppliers WHERE Country='Germany' ORDER BY City; |
مثال زیر تمام مقادیر “Customer” را از جدول Customers و “Supplier” را از جدول Suppliers انتخاب کرده و این مقادیر را در خروجی در فیلد Type، نمایش می دهد:
1 2 3 4 5 | SELECT 'Customer' As Type, ContactName, City, Country FROM Customers UNION SELECT 'Supplier', ContactName, City, Country FROM Suppliers; |
در پایان این بخش با چگونگی ترکیب دو دستور SELECT جداگانه در یک بانک اطلاعاتی ، و حالت های مختلف آن نیز، آشنا شدید. امیدواریم که از مباحث آموزش آشنایی با عملگر UNION در SQL نیز بخوبی استفاده کرده باشید.
Mary
سلام
چه سایت خوبی دارید…خدا قوت. 😉
صادق
سلام. ممنون از شما