الدرس 1 من 10
الربط بين جدولين
- 13 دقيقة
- 5 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
الربط الداخلي INNER JOIN
الشرح
قاعدة البيانات المصمّمة جيّدًا لا تكرّر اسم العميل في كل طلب، بل تحفظه مرّة واحدة في جدول customers، ويحمل الطلب رقم العميل فقط في العمود customer_id.
ثم يجمع JOIN بين الجدولين وقت الاستعلام هكذا: FROM orders JOIN customers ON customers.id = orders.customer_id.
والنوع الافتراضي هو INNER JOIN، وهو لا يُبقي إلا الصفوف التي لها مطابق في الجدولين، فالعميل الذي ليس له طلبات لا يظهر في النتيجة، وسنحلّ هذه المشكلة في الدرس التالي.
المطلوب
اعرض name وtotal لكل طلب، ورتّب النتيجة من الأكبر مبلغًا إلى الأصغر.
الفحوص
5 فحوص- خمسة صفوف، في كل صفّ طلب واحد
- العمودان name وtotal
- مرتّبة تنازليًّا بمبلغ الطلب
- أكبر طلب لخالد بمبلغ 300
- فهد لا يظهر لأنه بلا طلبات
الجداول المتاحة في هذا الدرس
CREATE TABLE customers ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, city TEXT NOT NULL ); CREATE TABLE orders ( id INTEGER PRIMARY KEY, customer_id INTEGER REFERENCES customers(id), total INTEGER NOT NULL, placed_on TEXT NOT NULL ); INSERT INTO customers (id, name, city) VALUES (1, 'ليان', 'الرياض'), (2, 'خالد', 'جدة'), (3, 'ريم', 'الدمام'), (4, 'فهد', 'الرياض'); INSERT INTO orders (customer_id, total, placed_on) VALUES (1, 120, '2026-09-01'), (1, 80, '2026-09-12'), (2, 300, '2026-09-03'), (3, 45, '2026-09-20'), (2, 60, '2026-09-25');