خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


استفاده از تابع UNION در SQL Server

استفاده از تابع UNION در SQL Server
تابع UNION در SQL Server برای ترکیب result set های دو یا چند دستور Select استفاده می شود. تابع UNION به طور پیش فرض فقط مقادیر DISTINCT را Select می کند. تمام دستورات select در UNION باید تعداد ستون های یکسانی داشته باشند و همچنین ستون ها باید دیتاتایپ های مشابهی داشته باشند و ستون های هر SELECT نیز باید به همان ترتیب باشند

سیستم یکپارچۀ سازمانی راهکار
Syntax کلی استفاده از تابع UNION بصورت زیر می باشد:



select column1, column2,.. from table1
UNION
select column1, column2,...from table2

در ادامه به مثال هایی از تابع UNION خواهیم پرداخت که شما هم با نحوه استفاده و هم کاربرد آن بیشتر آشنا خواهید شد.
مثلا ما اینجا دو جدول با نام های tblA و tblB داریم.

CREATE TABLE tblA (SNO INT NOT NULL, NAME VARCHAR(30), CODE VARCHAR(15))

INSERT INTO tblA (SNO, NAME, CODE)
VALUES(1, 'JOY','JO_FTX'),(2, 'RAHEJA', 'RAH_FTX'),(3, 'JOHN D', 'JHN_FTX')

CREATE TABLE tblB (SNO INT NOT NULL, NAME VARCHAR(30), CODE VARCHAR(15))

INSERT INTO tblB (SNO, NAME, CODE)
VALUES (1,'JOY','JO_FTX'),(2,'MARK JACK', 'MA_FTX')

استفاده از تابع UNION در SQL Server
حالا با دستور Select به رکوردهای هر دو جدول نگاه می کنیم:

SELECT * FROM tblA

SELECT * FROM tblB

استفاده از تابع UNION در SQL Server

SQL UNION statement

اسکریپت زیر result set ترکیبی هر دو جدول را بر میگرداند:

select Name ,code from tblA
UNION
select Name ,Code from tblB

استفاده از تابع UNION در SQL Server
همانطور که مشاهده کردید، Name و Code برای رکورد sno=1 در هر دو جدول یکسان است ، بنابراین union فقط ردیف unique را برای این result set برمیگرداند.

Union on tables but when column have different data type

select  sno , code from tblA
UNION
select Name ,Code from tblB
همانطرو که در select فوق مشاهده می کنید، ستون اول sno است که از نوع int بوده و این در حالی که در عبارت Select دوم، ستون اول name می باشد که نوع آن varchar است. در چنین حالتی قطعا با خطا مواجه خواهید شد:

استفاده از تابع UNION در SQL Server

UNION on tables but both table have different number of columns in select statement


select sno ,Name ,code from tblA
UNION
select Name ,Code from tblB

استفاده از تابع UNION در SQL Server
همانطور که می بینیم ، هر دو جدول تعداد ستون های مختلفی دارند، جدول اول دارای 3 ستون در دستور Select خود دارد و در مقابل جدول دوم فقط 2 ستون در Select دارد. پس خطا بدیهی است و در تصویر فوق، این خطا را می توانید مشاهده کنید.

UNION with order by clause

شما همچنین می توانید نتایج result set در Union را با استفاده از order by مرتب کنید.
عبارت زیر از union برای ترکیب Result هر دو دستور Select استفاده می کند و همچنین نتیجه را بر اساس نام به ترتیب نزولی مرتب می کند.

select Name ,code from tblA
UNION
select Name ,Code from tblB order by name desc

استفاده از تابع UNION در SQL Server

Order by فقط در آخرین دستور Select می تواند باشد. با استفاده از آن در اولین دستور یا جایی دیگر قبل از آخرین عبارت Select، خطایی مشابه خطای تصویر زیر را دریافت خواهید کرد.

select Name ,code from tblA order by name desc
UNION
select Name ,Code from tblB

استفاده از تابع UNION در SQL Server

نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز