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

مراجعة - الربط الذاتي (Self Join)

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

challenge icon

التحدي

صعب

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

  • friends: id، name، friend_id

لكل person في جدول friends، اعثر على جميع روابط صديق الصديق لديه. تحدث رابطة صديق الصديق عندما يكون person A صديقًا لـ person B، الذي يكون بدوره صديقًا لـ person C. اعرض هذه الروابط في ثلاثة أعمدة:

  • friend1: الشخص الذي يبدأ منه الاتصال
  • friend2: صديقه المباشر
  • friend3: صديق صديقه

القواعد:

  • لا تُدرج الحالات التي يكون فيها friend3 هو الشخص نفسه مثل friend1
  • رتّب النتائج حسب اسم friend1 بترتيب تنازلي

مثال: إذا كانت Alice صديقةً لـ Bob، وكان Bob صديقًا لـ Carol، فإن Alice-Bob-Carol ستكون رابطة صديق صديق صالحة.

جرّب بنفسك

-- انضم الجدول إلى نفسه مرتين بحيث يحمل صف واحد سلسلة من ثلاثة أشخاص
SELECT ____ AS friend1, ____ AS friend2, ____ AS friend3
FROM friends f1
JOIN friends f2 ON ____
JOIN friends f3 ON ____
-- استبعد السلاسل التي تعود إلى الشخص الذي بدأت منه
WHERE ____
ORDER BY ____ DESC;

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

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