SQL Self Join
زبان SQL وقتی بخوایم یک جدول رو با خودش join کنیم (یعنی ردیفهای داخل همون جدول رو با هم مقایسه کنیم)، از SELF JOIN استفاده میکنیم.
در واقع Self Join یک JOIN عادیه، فقط جدول یک بار با اسم مستعار دیگه به خودش وصل میشه.
🔹 ساختار کلی
-
همون جدول دوبار استفاده میشه، ولی با Aliasهای متفاوت (
aوb). -
شرط
WHEREمشخص میکنه کدوم رکوردها با هم مطابقت داده بشن.
🔹 مثال ساده
جدول: Employees
| id | name | manager_id |
|---|---|---|
| 1 | Ali | NULL |
| 2 | Sara | 1 |
| 3 | Reza | 1 |
| 4 | Narges | 2 |
اینجا هر کارمند یک manager_id داره که به id یکی دیگه از کارمندها اشاره میکنه.
کوئری:
📌 خروجی:
| Employee | Manager |
|---|---|
| Sara | Ali |
| Reza | Ali |
| Narges | Sara |
توضیح: جدول Employees با خودش JOIN شده تا مشخص بشه هر کارمند مدیرش کیه.
🔹 مثال دیگر (مقایسه ردیفها)
فرض کنید جدول Products داریم:
| id | name | price |
|---|---|---|
| 1 | Laptop | 25000 |
| 2 | Mouse | 200 |
| 3 | Keyboard | 500 |
| 4 | Monitor | 3000 |
میخوایم محصولاتی رو پیدا کنیم که قیمت مشابه دارن (خودشون به خودشون مقایسه بشن):
✅ نکات مهم
-
Self Join همیشه نیاز به Alias داره تا بتونیم تشخیص بدیم کدوم ستون به کدوم نسخه از جدول مربوطه.
-
معمولا برای کارهایی مثل پیدا کردن سلسلهمراتب (مدیر–کارمند) یا مقایسه ردیفها در یک جدول استفاده میشه.
-
Self Join میتونه از هر نوع JOIN باشه (INNER, LEFT, RIGHT).
HTML
Tailwind Css
Bootstrap 5
Java script
++C
Python
Three.js
Gsap
Sass
SQL
React