عملگر union در SQL
عملگر UNION دو یا چند دستور SELECT را با یکدیگر ترکیب می کند.
عملگر UNION
عملگر UNION برای ترکیب نتایج دو یا چند دستور SELECT استفاده می شود.
توجه داشته باشید که هر دستور SELECT در عملگر UNION باید تعداد ستونهای یکسانی را برگردانند. همچنین ستونها باید Data Type یکسانی داشته باشند. علاوه بر این ستونها در هر دستور SELECT باید به یک صورت مرتب شده باشند. (Order By)
فرم عملگر UNION:
UNION
SELECT column_name(s) FROM table_name2
نکته: عملگر UNION تنها داده هایی را به صورت پیش فرض انتخاب می کند که از یکدیگر متمایز باشند. برای اینکه داده های تکراری را هم بیاوریم از UNION ALL استفاده کنید.
فرم عملگر UNION ALL:
UNION ALL
SELECT column_name(s) FROM table_name2
نام ستون ها در جدول نتایج همیشه برابر نام ستونها در دستور SELECT اول در عملگر UNION می باشد.
مثال:
به جداول زیر نگاه کنید:
1- جدول کارمندان نروژی:
E_ID | E_Name |
---|---|
01 | Hansen, Ola |
02 | Svendson, Tove |
03 | Svendson, Stephen |
04 | Pettersen, Kari |
2- جدول کارمندان آمریکایی:
E_ID | E_Name |
---|---|
01 | Turner, Sally |
02 | Kent, Clark |
03 | Svendson, Stephen |
04 | Scott, Stephen |
می خواهیم لیست اسامی کارمندان امریکایی و نروژی را به صورت متمایز ( بدون تکرار) داشته باشیم.
از دستور زیر استفاده می کنیم:
UNION
SELECT E_Name FROM Employees_USA
جدول نتایج به شکل زیر خواهد بود:
E_Name |
---|
Hansen, Ola |
Svendson, Tove |
Svendson, Stephen |
Pettersen, Kari |
Turner, Sally |
Kent, Clark |
Scott, Stephen |
توجه:این دستور نمی تواند برای نمایش دادن اسامی تمام کارکنان امریکایی و نروژی استفاده شود. در مثال فوق دو کارمند با نام یکسان داریم و تنها بکی از آنها در جدول نتایج آمده است. دستور UNION تنها داده ها را به صورت متمایز (بدون تکرار) بر می گرداند.
مثال:
حال می خواهیم تمامی کارمندان آمریکایی و نروژی را لیست کنیم از دستور زیر استفاده می کنیم:
UNION ALL
SELECT E_Name FROM Employees_USA
نتیجه:
E_Name |
---|
Hansen, Ola |
Svendson, Tove |
Svendson, Stephen |
Pettersen, Kari |
Turner, Sally |
Kent, Clark |
Svendson, Stephen |
Scott, Stephen |
- نوشته شده توسط مهندس تمیزی
- بازدید: 36595
دیدگاهها
سلام خدا خیرت بده مطلبت مفید بود و کار راه انداز
سلام بسیار تشکر از زحماتتان!
من دو جدول دارم که می خواهم با استفاده از دستور UNION ALL رکوردهای آنها را یکجا نمایش بدهم ولی می خواهم هنگام استخراج داده ها یک فیلد جدیدی نتیجه ای دستور UNION ALL ایجاد کنم که در آن فیلد شماره ردیف رکوردها ثبت شود.
این کار را نتوانستم انجام دهم اگر کمک کنید بسیار ممنون می شوم. البته من در VB.Net کار می کنم.
با سلام.
شما میتونی از تابع Row_number استفاده کنی. کد سمپل زیر رو نگاه کنید:
SELECT ROW_NUMBER()
OVER (ORDER BY EmployeeName) AS Row,
EmployeeId, EmployeeName, Salary
FROM Employees
ممنونم خیلی مفید بود
سلام.ببخشید اگه بخواهیم مشخص کنیم که چه کتابی دست چه دانش آموزی هست باید چه کدی بنویسیم؟من دو جدول کتاب و دانش آموز ایجاد کردم به علاوه ی جدول رابط که pk هاشون بهم وصله به عنوان fk
سلام، قبل از هر چیز باید با دستور Join آشنا باشید. بنابراین مطلب زیر رو با دقت مطالعه کنید:
http://beyamooz.com/sql/101-advanced/264-%D9%BE%DB%8C%D9%88%D9%86%D8%AF-%D8%A8%DB%8C%D9%86-%D8%AC%D8%AF%D8%A7%D9%88%D9%84-%D8%AF%D8%B1-sql
اما برای بدست آوردن اینکه چه کتابی در اختیار چه دانش آموزی است، کافی است بین سه جدول ذکر شده join بزنید.