Self-Join در SQL Server
در SQL Server، دستور self-join مانند یک اتصال معمولی است، اما یک جدول را به خودش متصل می کند. مشابه هر join دیگری، self-join حداقل به دو جدول نیاز دارد. اما به جای اضافه کردن یک جدول متفاوت به join، نمونه دیگری از همان جدول را اضافه می کنید. این join در واقع پیوند بین دو نسخه از یک جدول است.
کلمه کلیدی Self Join وجود ندارد. شما یک join معمولی می نویسید که در آن هر دو جدول درگیر در اتصال یکسان هستند.
شکل زیر سینتکس کویری self-join است.
در self-join، شما باید نام مستعار جدول را برای هر دو نمونه جدول مشخص کنید. در غیر این صورت یک خطا دریافت خواهید کرد.
جدول Employee زیر را در نظر بگیرید که شامل ستون های EmployeeID و ManagerID است. مقدار ستون ManagerID هر یک از EmployeeID خواهد بود. بنابراین، ما می توانیم اطلاعات مدیر را در همان جدول پیدا کنیم.
جدول Employee شامل داده های زیر است.
در جدول بالا، EmployeeID 7 شامل Manager ID 1 به عنوان مدیر خود است. EmployeeID 1 حاوی NULL در ستون ManagerID است زیرا مدیری ندارد.
کویری self-join زیر مدیران همه کارمندان را دریافت می کند.
کویری بالا نتیجه زیر را در SQL Server نمایش می دهد.
نتیجه بالا همه کارمندانی که یک مدیر دارند همراه با نام مدیرشان را نشان می دهد. کارمندانی که مدیر ندارند ( ستون ManagerID برابر با NULL است) نمایش داده نمی شود.
می توانید کویری بالا را به گونه ای تنظیم کنید که همه کارمندان را فهرست کند، حتی اگر مدیری نداشته باشند که از کویری LEFT JOIN استفاده کند.
کویری بالا نتیجه زیر را نمایش می دهد.