دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
view در پایگاه داده SQL
1403/12/20 -
پیاده سازی Synchronization در سی شارپ
1403/12/20 -
Fragmentation در پایگاه داده SQL
1403/12/19 -
Delegate در سی شارپ
1403/12/19 -
B-Trees در پایگاه داده SQL
1403/12/18 -
Thread ها در سی شارپ
1403/12/18
عملگر OUTER APPLY در SQL

عملگر OUTER APPLY در پایگاه داده SQL
عملگر OUTER APPLY در SQL یکی از ابزارهای مفید برای انجام عملیات بر روی مجموعههای داده است که به ویژه در پایگاههای داده SQL Server استفاده میشود.
این عملگر به شما این امکان را میدهد که یک زیرپرس و جو (subquery) را به هر رکورد از یک جدول اصلی متصل کنید و نتایج را به صورت ترکیبی از رکوردهای اصلی و رکوردهای مرتبط از زیرپرس و جو بازگردانید.
عملگر OUTER APPLY به شما این امکان را میدهد که رکوردهایی را از یک جدول اصلی انتخاب کنید و برای هر رکورد، یک زیرپرس و جو اجرا کنید.
در صورتی که زیرپرس و جو برای یک رکورد در جدول اصلی هیچ نتیجهای نداشته باشد، رکورد اصلی با مقادیر NULL برای ستونهای مربوط به زیرپرس و جو بازگردانده میشود.
این ویژگی OUTER APPLY را شبیه به LEFT JOIN میکند، اما با این تفاوت که OUTER APPLY میتواند با زیرپرس و جوهای پیچیدهتر و توابع جدولدار (table-valued functions) کار کند.
ساختار کلی عملگر OUTER APPLY
ساختار کلی استفاده از OUTER APPLY به شکل زیر است:
SELECT main_table.column1, main_table.column2, subquery_table.column1, subquery_table.column2
FROM main_table
OUTER APPLY (SELECT column1, column2 FROM subquery_table WHERE condition) AS subquery_table;
نکات مهم درباره OUTER APPLY
-
تفاوت با CROSS APPLY
در حالی که OUTER APPLY نتایج را حتی اگر زیرپرس و جو هیچ رکوردی برنگرداند، شامل میشود، CROSS APPLY تنها رکوردهایی را برمیگرداند که زیرپرس و جو حداقل یک نتیجه دارد. -
کاربرد با توابع جدولدار
OUTER APPLY معمولاً با توابع جدولدار (table-valued functions) استفاده میشود، جایی که میخواهید برای هر رکورد از جدول اصلی، نتایج مرتبط را از تابع جدولدار دریافت کنید. -
عملکرد
OUTER APPLY میتواند در برخی موارد بهینهتر از LEFT JOIN باشد، به خصوص زمانی که زیرپرس و جو شامل محاسبات پیچیده یا توابع باشد.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟
با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!
این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.
با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.
پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
همین حالا شروع کنید و به دنیای دادهها بپیوندید!
مثالهای عملی عملگر OUTER APPLY
-
مثال ساده
فرض کنید دو جدول داریم: Employees و Projects.
میخواهیم لیستی از کارمندان را به همراه آخرین پروژهای که هر یک از آنها در آن شرکت کردهاند، نمایش دهیم.
SELECT e.EmployeeID, e.EmployeeName, p.ProjectName
FROM Employees e
OUTER APPLY (
SELECT TOP 1 ProjectName
FROM Projects p
WHERE p.EmployeeID = e.EmployeeID
ORDER BY p.StartDate DESC
) AS p;
در این مثال، برای هر کارمند، آخرین پروژهای که او در آن شرکت کرده است، نمایش داده میشود.
اگر کارمندی پروژهای نداشته باشد، نام پروژه به صورت NULL نمایش داده میشود.
-
مثال با توابع جدولدار
فرض کنید تابعی به نام GetEmployeeProjects داریم که پروژههای مربوط به یک کارمند را برمیگرداند. میخواهیم لیست کارمندان را به همراه پروژههایشان نمایش دهیم.
SELECT e.EmployeeID, e.EmployeeName, p.ProjectName
FROM Employees e
OUTER APPLY GetEmployeeProjects(e.EmployeeID) AS p;
در این مثال، برای هر کارمند، پروژههای مرتبط با او نمایش داده میشود. اگر کارمندی پروژهای نداشته باشد، نام پروژه به صورت NULL نمایش داده میشود.
مزایا عملگر OUTER APPLY
-
انعطافپذیری
OUTER APPLY به شما این امکان را میدهد که برای هر رکورد از جدول اصلی، یک زیرپرس و جو اجرا کنید و نتایج را به صورت دینامیک دریافت کنید. -
کاربرد با توابع جدولدار
این عملگر به ویژه در مواقعی که با توابع جدولدار کار میکنید، بسیار مفید است. -
نتایج کامل
حتی اگر زیرپرس و جو هیچ نتیجهای نداشته باشد، رکوردهای اصلی با مقادیر NULL برای ستونهای مربوط به زیرپرس و جو بازگردانده میشوند.
مقایسه با دیگر عملگرهای JOIN و LEFT JOIN
عملگر OUTER APPLY با عملگرهای دیگر مانند JOIN و LEFT JOIN مقایسه میشود:
-
JOIN
این عملگر تنها رکوردهایی را برمیگرداند که در هر دو جدول وجود دارند. -
LEFT JOIN
این عملگر رکوردهای جدول اصلی را به همراه رکوردهای مرتبط از جدول دیگر برمیگرداند و در صورت عدم وجود رکورد مرتبط، مقادیر NULL را برای ستونهای جدول دیگر قرار میدهد. -
OUTER APPLY
این عملگر مشابه LEFT JOIN عمل میکند، اما به شما این امکان را میدهد که برای هر رکورد از جدول اصلی، یک زیرپرس و جو اجرا کنید.
معایب عملگر OUTER APPLY
-
پیچیدگی
استفاده از OUTER APPLY میتواند کد را پیچیدهتر کند و خوانایی آن را کاهش دهد. -
کاهش عملکرد
در برخی موارد، استفاده از OUTER APPLY ممکن است منجر به کاهش عملکرد شود، به خصوص اگر زیرپرس و جوهای پیچیدهای داشته باشید.
مثالهای پیشرفته عملگر OUTER APPLY
-
استفاده از OUTER APPLY با چندین زیرپرس و جو
شما میتوانید از OUTER APPLY برای اجرای چندین زیرپرس و جو به طور همزمان استفاده کنید.به عنوان مثال:
SELECT e.EmployeeID, e.EmployeeName, p.ProjectName, d.DepartmentName
FROM Employees e
OUTER APPLY (
SELECT TOP 1 ProjectName
FROM Projects p
WHERE p.EmployeeID = e.EmployeeID
ORDER BY p.StartDate DESC
) AS p
OUTER APPLY (
SELECT DepartmentName
FROM Departments d
WHERE d.DepartmentID = e.DepartmentID
) AS d;
در این مثال، ما اطلاعات کارمندان را به همراه آخرین پروژه و نام بخش آنها نمایش میدهیم.
-
استفاده از OUTER APPLY برای محاسبات پیچیده
شما میتوانید از OUTER APPLY برای انجام محاسبات پیچیده نیز استفاده کنید:
SELECT e.EmployeeID, e.EmployeeName, p.TotalProjects
FROM Employees e
OUTER APPLY (
SELECT COUNT(*) AS TotalProjects
FROM Projects p
WHERE p.EmployeeID = e.EmployeeID
) AS p;
در اینجا، تعداد پروژههای هر کارمند محاسبه و نمایش داده میشود.
دوره های مرتبط

آموزش پایگاه داده SqlServer
پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .