×

COMMON TABLE EXPRESSIONS (CTES) در SQL Server

فصل نوزدهم :

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)

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