فصل نوزدهم :
COMMON TABLE EXPRESSIONS (CTES)
هنگامی که یک کوئری و یا subquery نتیجه ایی را باز میگرداند می توان از این نتایج در ضمن این کوئری باردیگری استفاده کرد بدون اینکه دوباره نیاز به اجرای آن کوئری باشد. فرض کنید که در یک کوئری یک subquery داشته باشیم که به نتایج آن بار دیگری در کوئری اصلی مورد نیاز باشد و نمی خواهیم دوباره آن subquery را اجرا کنیم . می توانیم به نتیجه آن subquery عنوانی اختصاص دهیم که بار دیگر بتوانیم به آن رجوع کنیم و از آن استفاده کنیم .
فرض کنید یک جدول موقت دارید. که بعنوان ابجکت های دیتابیس ذخیره نشده است .
WITH expression_name [ ( column_name [,...n] ) ]
AS
( CTE_query_definition )
expression_name : نامی را به cte اختصاص میدهیم .
column_name : لیست ستونها
CTE_query_definition : در ان select مورد نظر جهت بازگرداندن نتایج را می نویسیم
with mylist (firstname,lastname,GorooheSeni)
as
(
select [FirstName],[LastName],GorooheSeni=
case
when age<11 then 'کودک'
when age=11 then 'یازده ساله'
when age>11 and age<13 then 'نوجوان'
else 'جوان'
end
from [dbo].[Student]
)
select firstname,GorooheSeni from mylist
همانطور که میبینیم با cte mylist همانند یک جدول برخورد میکنیم.
در نظر بگیرید که در cte محاسبات بسیار سنگینی انجام شده اند که در فراخوانی ار دیگر احتیاجی به انجام مجدد انها نیست .
مثال دیگر
with mylist(ClassroomID,firstname,lastname,gorooheseni)
as
(
select ClassroomID,[FirstName],[LastName],GorooheSeni=
case
when age<11 then 'کودک'
when age=11 then 'یازده ساله'
when age>11 and age<13 then 'نوجوان'
else 'جوان'
end
from [dbo].[Student]
)
select [ClassName],firstname,lastname,gorooheseni from Classroom inner join mylist
on Classroom.ID=mylist.ClassroomID
فیلم را حتما ببینید
بسیاری از مفاهیم درفیلم اموزشی بطور مفصل شرح داده شده اند . لذا حتما فیلم آموزشی این فصل را ببینید .
مفاهیم و موضوعات این فصل عبارتند از :
-
COMMON TABLE EXPRESSIONS (CTES)