Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الربط الذاتي (Self Join)

جزء من قسم الأساسيات في رحلة SQL على Coddy. الدرس 46 من 72.

عمليات الربط الذاتي هي أنواع مختلفة من عمليات الربط. حتى الآن، تحدثنا عن عمليات ربط جداول متعددة، لكن عمليات الربط الذاتي تُجرى على الجدول نفسه. ومن الأمثلة الكلاسيكية جدول employees.

employee_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

لكل موظف مدير باستثناء المدير الأعلى، وكل مدير هو أيضًا موظف.

المشكلة: نريد أن نعرف اسم المدير لكل موظف.

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

نُجري عملية ربط بين الجدول نفسه، باستثناء أننا نُسمّيه في المرة الأولى e1 وفي المرة الثانية e2. ويجري الربط بين الحقلين employee_id وmanager_id.

النتيجة:

employee_idemployee_namemanager_name
1MinkeTemur
2TemurTatjana
3TatjanaMarinela
challenge icon

التحدي

متوسط

الجداول والأعمدة المتاحة:

  • friends: id، name، friend_id

ابحث عن أزواج من الأصدقاء الذين تربطهم صداقة متبادلة (توجد الصداقة المتبادلة عندما يشير friend_id للشخص A إلى الشخص B AND يشير friend_id للشخص B إلى الشخص A). اعرض اسمي الصديقين في row واحدة. سمِّ الأعمدة friend1 وfriend2.

ملاحظة: أدرج في جملة WHERE المعيار friend1.id < friend2.id حتى لا تتضمن أزواجًا مكررة 

جرّب بنفسك

-- انضم الجدول إلى نفسه حتى يظهر صف واحد شخصين مختلفين
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- أبقِ فقط على الأزواج التي تشير إلى بعضها البعض
WHERE ____ AND f1.id < f2.id;
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ SQL