×

اپراتور های Union , Except , Intersect در SQL Server

فصل پانزدهم :

اپراتور های Union , Except , Intersect

اپراتور union

این اپراتور رکورد های نتیجه دو یا چند select را با هم ترکیب combine میکند .
نکته مهم اینکه تمامی select های ما که در union شرکت میکنند بایستی دارای تعداد ستون های برابر با شند .ستونها متناظر بایستی دارای data type یکسان نیز باشند . و ترتیب قرار گرفتن ستونها انها نیز یکسان باشد.
مثلا عناوین کتابهایی که از نوع business و psychology هستند را لیست کنید .
SELECT Sum(qty),'business'
From Sales INNER JOIN Titles
ON Sales.Title_ID = Titles.Title_id
WHERE Type='business'
Union
SELECT Sum(qty),'psychology'
From Sales INNER JOIN Titles
ON Sales.Title_ID = Titles.Title_id
WHERE Type='psychology'



SELECT Sum(qty),'business'
From Sales INNER JOIN Titles
ON Sales.Title_ID = Titles.Title_id
WHERE Type='business'
Union all
SELECT Sum(qty),'psychology'
From Sales INNER JOIN Titles
ON Sales.Title_ID = Titles.Title_id
WHERE Type='psychology'

لیست نام خانوادگی دانش اموزانی که نام دوره اموزشی که طی کردند حاوی کلمه "بال" باشد. و همچنین دانش آموزانی که دوره های پینگ پنگ یا فوتبال و یا بسکتبال را گذرانده اند .
select [LastName] from [Student] where [TrainingCourses] like N'%بال%'
union
select [LastName] from [Student] where
[TrainingCourses] in (N'پینگ پنگ' ,N'فوتبال',N'بسکتبال')


همانطور که میبینیم رکورد های تکراری بین دو کوئری در تنیجه ذکر نشده اند .
select [LastName] from [Student] where [TrainingCourses] like N'%بال%'
union all
select [LastName] from [Student] where
[TrainingCourses] in (N'پینگ پنگ' ,N'فوتبال',N'بسکتبال')

INTERSECT

مشاهده مشترکات بین دو کوئری
select [LastName] from [Student] where [TrainingCourses] like N'%بال%'
INTERSECT
select [LastName] from [Student] where
[TrainingCourses] in (N'پینگ پنگ' ,N'فوتبال',N'بسکتبال')

دو نفر هستند که در نتایج هر دو کوئری موجود می باشند

Except

مشاهده رکورد هایی که در کوئری اول هستند ولی در دومی نیستند.
select [LastName] from [Student] where [TrainingCourses] like N'%بال%'
except
select [LastName] from [Student] where
[TrainingCourses] in (N'پینگ پنگ' ,N'فوتبال',N'بسکتبال')

اپراتور not

نقیض یک عبارت منطقی
مثلا لیست دانش آموزانی که سن آنها نه 11 سال است نه 1 سال و نه 13 سال
select * from [dbo].[Student] where age NOT in (11,12,13)



مفاهیم و موضوعات این فصل عبارتند از :

  • اپراتور های Union , Except , Intersect

  • اپراتور not

vatantop
نظرات و سوالات درج سوال/ نظر