عملگر  OUTER APPLY در SQL

تیم تحریریه 1403/11/19 0 91
لینک کوتاه https://zoheirsoftware.com/z/674f18702 |
عملگر  OUTER APPLY در SQL ,ساختار کلی  عملگر  OUTER APPLY,مزایا عملگر  OUTER APPLY

عملگر  OUTER APPLY در پایگاه  داده SQL 

عملگر OUTER APPLY در SQL یکی از ابزارهای مفید برای انجام عملیات بر روی مجموعه‌های داده است که به ویژه در پایگاه‌های داده SQL Server استفاده می‌شود.

این عملگر به شما این امکان را می‌دهد که یک زیرپرس و جو (subquery) را به هر رکورد از یک جدول اصلی متصل کنید و نتایج را به صورت ترکیبی از رکوردهای اصلی و رکوردهای مرتبط از زیرپرس و جو بازگردانید.

عملگر OUTER APPLY به شما این امکان را می‌دهد که رکوردهایی را از یک جدول اصلی انتخاب کنید و برای هر رکورد، یک زیرپرس و جو اجرا کنید.

در صورتی که زیرپرس و جو برای یک رکورد در جدول اصلی هیچ نتیجه‌ای نداشته باشد، رکورد اصلی با مقادیر NULL برای ستون‌های مربوط به زیرپرس و جو بازگردانده می‌شود.

این ویژگی OUTER APPLY را شبیه به LEFT JOIN می‌کند، اما با این تفاوت که OUTER APPLY می‌تواند با زیرپرس و جوهای پیچیده‌تر و توابع جدول‌دار (table-valued functions) کار کند.

 

عملگر  OUTER APPLY در پایگاه  داده SQL 

 

ساختار کلی  عملگر  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 برای ستون‌های مربوط به زیرپرس و جو بازگردانده می‌شوند.

 

 

مزایا عملگر OUTER APPLY

 

مقایسه با دیگر عملگرهای 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 با چندین زیرپرس و جو

    شما می‌توانید از 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;


در اینجا، تعداد پروژه‌های هر کارمند محاسبه و نمایش داده می‌شود.

 

دوره های مرتبط
آموزش Sql,آموزش sqlserver, آموزش جامع Sqlserver

آموزش پایگاه داده SqlServer

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

997,000 تومان

2.5k بازدید

ارسال دیدگاه

برای ارسال نظر لطفا ورود یا ثبت نام کنید.