خود-اتصالی (Self Join)
«خود-اتصالی (Self Join)» یعنی اتصال یک جدول به خودش. ما از «نام مستعار (Alias)» استفاده می کنیم. سپس مانند دو جدول جدا رفتار می کنیم. مثل مقایسه دانش آموزان با هم کلاسی هایشان در یک لیست.
ایده اصلی در خود-اتصالی
وقتی روابط درون همان جدول باشند، خود-اتصالی کاربردی است. برای نمونه، پیدا کردن مشتریان یک شهر، یا ساخت ساختار مدیر و کارمند در یک جدول.
سینتکس استاندارد
SELECT column_name(s);
FROM table1 T1,
table1 T2;
WHERE condition;
نکته: T1 و T2 فقط نام مستعار برای همان جدول هستند. این کار خوانایی را بهتر می کند.
مثال کاربردی: مشتریان هم شهر
می خواهیم دو مشتری هم شهر را کنار هم ببینیم. بنابراین، شناسه ها متفاوت هستند اما شهر یکسان است. سپس بر اساس شهر مرتب می کنیم.
SELECT A.CustomerName AS CustomerName1,
B.CustomerName AS CustomerName2,
A.City;
FROM Customers A,
Customers B;
WHERE A.CustomerID <> B.CustomerID;
AND A.City = B.City;
ORDER BY A.City;
گام های سریع تمرین
- برای جدول، دو نام مستعار تعریف کن؛ A و B.
- ستون های خروجی را مشخص کن؛ نام ها و شهر.
- شرط نابرابری شناسه ها را بنویس.
- شرط برابری شهرها را اضافه کن.
- در پایان، با ORDER BY مرتب کن.
برای مقایسه رفتار، صفحه INNER JOIN را ببین. سپس CROSS JOIN را بررسی کن. همچنین صفحه خود-اتصالی را نشانه گذاری کن.
جمع بندی سریع
- Self Join اتصال جدول به خودش است.
- با Alias دو نمای جدا می سازیم.
- شرط ها تضاد یا شباهت ها را مشخص می کنند.
- برای روابط درون جدولی عالی است.
- خوانایی کوئری را حفظ کن.