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

الربط الأساسي - الجزء الأول

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

حتى الآن، قمنا بالتعامل مع مشكلات متعلقة بجدول واحد. الآن سندرس كيفية التعامل مع عدة جدول (tables).

دعنا نفترض أن لدينا الجداول التالية:

courses

course_idlecturer_id
11
21
32

lecturers

lecturer_idname
1Jhonas
2Malidos

المهمة هي عرض كل دورة تعليمية (course_id) مع اسم المحاضر (lecturer_name) المقابل لها.

هناك طريقتان لتحقيق ذلك. بالنسبة لكل خيار، نربط كل `row` في أحد الـ `tables` بالآخر. نتحقق من شرط يجب استيفاؤه، وإذا تحقق الشرط ندمج الـ `row`ين في `row` واحد. النتيجة المطلوبة للخيارين الـ `both`:

course_idlecturer_name
1Jhonas
2Jhonas
3Malidos

الخيار 1:

SELECT courses.course_id, lecturers.name AS lecturer_name
FROM courses, lecturers
WHERE courses.lecturer_id = lecturers.lecturer_id

هنا نكتب جدولين في الكلمة المفتاحية FROM، وفي جملة WHERE نطلب أن يكون lecturer_id لكلا السجلين متطابقاً. وفي جملة SELECT نكتب الآن table.column حتى تعرف قاعدة البيانات من أين تجلب العمود.

الخيار 2:

SELECT courses.course_id, lecturers.name AS lecturer_name
FROM courses
JOIN lecturers ON courses.lecturer_id = lecturers.lecturer_id

بدلاً من WHERE نستخدم JOIN table ON condition

يُطلق على هذا النوع من الربط أيضاً اسم الربط الداخلي (inner join).

challenge icon

التحدي

سهل

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

  • <strong>grades</strong>: <strong>course_id</strong>, <strong>student_id</strong>, <strong>grade</strong>
  • <strong>students</strong>: <strong>id</strong>, <strong>name</strong>

أنشئ استعلامًا يجلب student_name و course_id و student_id و grade في جدول واحد. قم بترتيب النتيجة حسب grade تصاعديًا.

جرّب بنفسك

-- اسرد الأعمدة التي تطلبها المهمة، باستخدام الاسم المستعار الذي تطلبه
SELECT ____
FROM students, grades
-- احتفظ فقط بأزواج الصفوف حيث يصف كلا الجدولين نفس الشخص
WHERE ____
ORDER BY grade
quiz iconاختبر نفسك

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

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

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