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