فصل پانزدهم :
اپراتور های 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'
نکته union بطور پیشفرض مقادیر distinct را در نتایج می آورد. اگر بخواهیم مقادیر تکراری هم در نتیجه شامل شوند از Union All استفاده میکنیم .
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