مراجعة - الربط الذاتي (Self Join)
جزء من قسم الأساسيات في رحلة SQL على Coddy. الدرس 47 من 72.
التحدي
صعبالجداول والأعمدة المتاحة:
<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;جميع دروس الأساسيات
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