الربط الذاتي (Self Join)
جزء من قسم الأساسيات في رحلة SQL على Coddy. الدرس 46 من 72.
تُعد الانضمامات الذاتية (Self-joins) أنواعًا مختلفة من الانضمامات. حتى الآن، تحدثنا عن عمليات الانضمام لعدّة جداول، ولكن الانضمامات الذاتية تُربط بـ `table` نفسه. والمثال التقليدي على ذلك هو جدول `employees`.
| employee_id | employee_name | manager_id |
| 1 | Minke | 2 |
| 2 | Temur | 3 |
| 3 | Tatjana | 4 |
| 4 | Marinela |
كل موظف لديه مدير باستثناء المدير الأعلى، وكل مدير هو أيضاً موظف.
المشكلة: نريد معرفة اسم المدير لكل موظف.
SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_idنقوم بالربط بين نفس الـ table باستثناء أنه في المرة الأولى نسميه e1 وفي المرة الثانية يكون e2. يتم الربط بين الحقلين employee_id و manager_id.
النتيجة:
| employee_id | employee_name | manager_name |
|---|---|---|
| 1 | Minke | Temur |
| 2 | Temur | Tatjana |
| 3 | Tatjana | Marinela |
التحدي
متوسطالجداول والأعمدة المتاحة:
<strong>friends</strong>:<strong>id</strong>,<strong>name</strong>,<strong>friend_id</strong>
أوجد أزواج الأصدقاء الذين تربطهم صداقة متبادلة (توجد الصداقة المتبادلة عندما يشير friend_id للشخص A إلى الشخص B يشير friend_id للشخص B إلى الشخص A). اعرض اسمي كلا الصديقين في صف واحد. سمِّ الأعمدة friend1 و friend2.
ملاحظة: قم بتضمين المعيار friend1.id < friend2.id في بند WHERE حتى لا يتضمن أزواجًا مكررة
جرّب بنفسك
-- اربط الجدول بنفسه حتى يظهر صف واحد شخصين مختلفين
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- احتفظ فقط بالأزواج التي تشير إلى بعضها البعض
WHERE ____ AND f1.id < f2.id;يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2الشروط
أساسيات الشروطالكلمة المفتاحية ANDالكلمة المفتاحية ORالكلمة المفتاحية NOTدمج شروط متعددةالأقواسالقيم المنطقية Booleans3تنسيق محدد للنتائج
قيم Nullترتيب النتائج - الجزء الأولترتيب النتائج - الجزء الثانيمراجعة - شركة للأمن السيبرانيتحديد عدد السجلاتمراجعة - مصنع مركبات6تحديات تمهيدية
مراجعة - الانتخابات البرلمانيةمراجعة - اعتقال الشرطة للمجرمينمراجعة - حاوية مشروبات البارمراجعة - هندسة أعمدة جديدة9جداول متعددة
الربط الأساسي - الجزء الأولالربط الأساسي - الجزء الثانيمراجعة - الربط (Join)الربط الذاتي (Self Join)مراجعة - الربط الذاتي (Self Join)الاتحاد (Union)تبسيط الاستعلامات، الكلمة المفتاحية WITHمراجعة - استعلامات WITHمراجعة - مقاول العقارات12Window Functions الجزء الثاني
دوال RANK و DENSE_RANKمراجعة - RANK و DENSE_RANKدالة NTILEدوال التجميعمعيار ROWS و RANGEتدرّب بنفسك: Playground لـ SQL