لماذا يتكرر صف الجدول الأول عند الربط بعلاقة واحد إلى متعدد؟

متوسطقراءة دقيقةآخر تحديث 3 أكتوبر 2026

SQL قواعد البيانات

الإجابة

عند ربط جدولين، ينتج SQL صفا لكل زوج يحقق شرط الربط. لذلك لا يضمن وجود مفتاح أساسي في الجدول الأول ظهور كل صف منه مرة واحدة في النتيجة. إذا كان للموظف مهمتان، فستظهر بياناته مرتين عند عرض الموظف مع مهامه، مرة بجانب كل مهمة مطابقة.

هذا التكرار يعكس العلاقة بين البيانات، ولا يعني أن جدول الموظفين يحتوي على سجلين متطابقين. المفتاح الأساسي يمنع تكرار المعرّف داخل الجدول الأصلي، لكنه لا يمنع استخدام صف الموظف نفسه في أكثر من زوج ناتج عن الربط. لفهم العدد المتوقع، افحص عدد المطابقات لكل صف على حدة.

مثال

SELECT e.id, t.id AS task_id
FROM employees AS e
INNER JOIN tasks AS t
  ON t.employee_id = e.id;

إذا لم تكن هناك مهمة مطابقة لموظف معين، فلن يضيف ذلك الموظف أي صف في هذا الاستعلام. أما الموظف الذي لديه ثلاث مهام فيضيف ثلاثة صفوف.

باختصار: عدد الصفوف بعد الربط يتبع عدد الأزواج المطابقة، وليس عدد المعرّفات الفريدة في الجدول الأول.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

ما الصفوف الناتجة عن الاستعلام الأخير بالترتيب؟

CREATE TABLE employees (
  id INT PRIMARY KEY
);
CREATE TABLE tasks (
  id INT PRIMARY KEY,
  employee_id INT
);
INSERT INTO employees VALUES (1), (2);
INSERT INTO tasks VALUES (10, 1), (11, 1), (12, 2);
SELECT e.id, t.id AS task_id
FROM employees AS e
INNER JOIN tasks AS t ON t.employee_id = e.id
ORDER BY e.id, t.id;