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

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

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

challenge icon

التحدي

صعب

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

  • <strong>friends</strong>: <strong>id</strong>, <strong>name</strong>, <strong>friend_id</strong>

لكل شخص في الجدول friends، أوجد جميع اتصالات صديق-الصديق التي لديه. يحدث اتصال صديق-الصديق عندما يكون الشخص A صديقًا للشخص B، والذين بدورهم أصدقاء مع الشخص 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