خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
استفاده از تابع UNION در SQL Server
تابع UNION در SQL Server برای ترکیب result set های دو یا چند دستور Select استفاده می شود. تابع UNION به طور پیش فرض فقط مقادیر DISTINCT را Select می کند. تمام دستورات select در UNION باید تعداد ستون های یکسانی داشته باشند و همچنین ستون ها باید دیتاتایپ های مشابهی داشته باشند و ستون های هر SELECT نیز باید به همان ترتیب باشند
Syntax کلی استفاده از تابع UNION بصورت زیر می باشد:
در ادامه به مثال هایی از تابع UNION خواهیم پرداخت که شما هم با نحوه استفاده و هم کاربرد آن بیشتر آشنا خواهید شد.
مثلا ما اینجا دو جدول با نام های tblA و tblB داریم.
حالا با دستور Select به رکوردهای هر دو جدول نگاه می کنیم:
همانطور که مشاهده کردید، Name و Code برای رکورد sno=1 در هر دو جدول یکسان است ، بنابراین union فقط ردیف unique را برای این result set برمیگرداند.
همانطور که می بینیم ، هر دو جدول تعداد ستون های مختلفی دارند، جدول اول دارای 3 ستون در دستور Select خود دارد و در مقابل جدول دوم فقط 2 ستون در Select دارد. پس خطا بدیهی است و در تصویر فوق، این خطا را می توانید مشاهده کنید.
عبارت زیر از union برای ترکیب Result هر دو دستور Select استفاده می کند و همچنین نتیجه را بر اساس نام به ترتیب نزولی مرتب می کند.
Order by فقط در آخرین دستور Select می تواند باشد. با استفاده از آن در اولین دستور یا جایی دیگر قبل از آخرین عبارت 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')
حالا با دستور Select به رکوردهای هر دو جدول نگاه می کنیم:
SELECT * FROM tblA
SELECT * FROM tblB
SQL UNION statement
اسکریپت زیر result set ترکیبی هر دو جدول را بر میگرداند:select Name ,code from tblA
UNION
select Name ,Code from tblB
همانطور که مشاهده کردید، Name و Code برای رکورد sno=1 در هر دو جدول یکسان است ، بنابراین union فقط ردیف unique را برای این result set برمیگرداند.
Union on tables but when column have different data type
select sno , code from tblAهمانطرو که در select فوق مشاهده می کنید، ستون اول sno است که از نوع int بوده و این در حالی که در عبارت Select دوم، ستون اول name می باشد که نوع آن varchar است. در چنین حالتی قطعا با خطا مواجه خواهید شد:
UNION
select Name ,Code from tblB
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
همانطور که می بینیم ، هر دو جدول تعداد ستون های مختلفی دارند، جدول اول دارای 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
Order by فقط در آخرین دستور Select می تواند باشد. با استفاده از آن در اولین دستور یا جایی دیگر قبل از آخرین عبارت Select، خطایی مشابه خطای تصویر زیر را دریافت خواهید کرد.
select Name ,code from tblA order by name desc
UNION
select Name ,Code from tblB
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: