ماذا يحدث في CROSS JOIN إذا كان أحد الجدولين فارغا؟

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

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

الإجابة

تعتمد نتيجة CROSS JOIN على وجود صف من كل طرف لتكوين كل زوج. إذا كان أحد الجدولين فارغا، فلا يوجد صف يمكن إقرانه بصفوف الجدول الآخر، ولذلك تكون النتيجة فارغة مهما كان عدد الصفوف في الطرف غير الفارغ. القاعدة العددية هنا مباشرة: حاصل ضرب أي عدد في صفر يساوي صفرا.

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

مثال

SELECT p.id, a.id
FROM planets AS p
CROSS JOIN astronauts AS a;

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

باختصار: وجود جدول فارغ يجعل نتيجة CROSS JOIN فارغة، لأنه لا يمكن تكوين زوج دون صف من كل طرف.

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

اختبر فهمك

كم صفا يعيد الاستعلام الأخير؟

CREATE TABLE planets (id INT PRIMARY KEY);
CREATE TABLE astronauts (id INT PRIMARY KEY);
INSERT INTO planets VALUES (1), (2), (3);
INSERT INTO astronauts (id)
SELECT 10 WHERE 1 = 0;
SELECT p.id AS planet_id, a.id AS astronaut_id
FROM planets AS p
CROSS JOIN astronauts AS a;