امروز میخواهیم با یکی از انواع Table Expressions ها که به شدت کار برد دارد آشنا شویم.تکنولوژی CTEs
یا همان (Common Table Expressions) از نسخه ی SQL Server 2005 به رسمیت شناخته شد و شامل
یک Result Set موقتی است از این رو میگوییم موقتی که در قالب یک Object در دیتا بیس ما ذخیره نمیشود
و با اتمام دستور از بین میرود. از CTEs میتوان در دستورات INSERT , UPDATE, DELETE , SELECT
و همچنین در دستور CREATE VIEW و SELECT مربوط به آن استفاده کرد . در نسخه SQL SERVER 2008
از CTE میتوان در دستور MERGE هم بهره برد.( و اینکه دستور MERGE چیست در پست های بعدی به آن
اشاره خواهیم کرد.) در SQL Server ما از دو نوع CTE به نام های CTE بازگشتی و غیر بازگشتی استفاده
میکنیم که در این مقاله ما صرفا به بحث در رابطه با CTE غیر بازگشتی , ساختار , نحوه استفاده , و در
آخر به مثالی از آن میپردازیم و در پست بعدی به طور کامل از نوع بازگشتی آن صحبت خواهیم کرد.
در واقع یکی از کاربرد های CTE ایجاد ماژول های کوچکی است که امکان استفاده مجدد را به شما داده و
سبب خواناتر شدن کوئری های پیچیده می شود و دیگر کار برد آن میتوان زمانی که شما به ساخت یک View
احتیاجی ندارید ولی قصد استفاده از مزایای یک View را دارید , اشاره کرد .ساده ترین ساختار یک CTE غیر
بازگشتی به صورت زیر می باشد
نکات خیلی مهمی که باید در رابطه با CTE ها بدانیم عبارت است از :
حال با استفاده از دیتابیس Northwind میخواهیم به مثال هایی از CTE بپردازیم
مثال اول : فراخوانی فیلد هایی از جدول Customers
خروجی کوئری بالا بصورت زیر میباشد .
مثال دوم : تمام مشتریانی که بیش از 15 سفارش داشته اند. (تمام مشتریان در جدول Customers و سفارشات آن در جدول Orders می باشد.)
نتیجه کوئری بالا به صورت زیر میباشد.
توجه داشته باشید هرگاه خواستید از CTE های تو در تو استفاده کنید با یک " , " از هم جدا میکنیم .در CTE های تو در تو هر بخش به بخش های بالایی خود دسترسی دارد و در نهایت Outer Query بیرون از CTE به همه بخش ها دسترسی دارد. ساختار یک CTE تو در تو به شکل زیر میباشد .