الدرس 1 من 10

الربط بين جدولين

هدف الدرس

INNER JOIN

01

الشرح

القاعدة الجيّدة لا تكرّر اسم العميل في كل طلب؛ تحفظه مرّة في customers، والطلب يحمل رقمه فقط في customer_id.

JOIN يعيد جمعهما وقت السؤال: FROM orders JOIN customers ON customers.id = orders.customer_id.

وINNER JOIN — وهو الافتراضي — يُبقي فقط ما له طرفان. فالعميل بلا طلبات لا يظهر، وهذا ما سيحلّه الدرس التالي.

02

المطلوب

اعرض name وtotal لكل طلب، مرتّبة من الأكبر.

معايير التصحيح

5 معايير
  1. خمسة صفوف — طلب لكل صفّ
  2. العمودان name و total
  3. مرتّبة تنازليًّا بالمجموع
  4. الأكبر لخالد بـ300
  5. فهد بلا طلبات فلا يظهر
الجداول المتاحة في هذا الدرس
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');
query.sql
المخرجاتSQLite · sql.js

جارٍ تحميل SQLite…

–/5

يبدأ الفحص حين تجهز البيئة.

5 معايير في بطاقة «المطلوب».