شرح أنواع SQL Joins خطوة بخطوة مع أمثلة
تعتبر الـ Joins من أهم الأدوات في لغة SQL حيث تسمح لنا بدمج البيانات من جداول متعددة مرتبطة ببعضها البعض. باستخدام Joins يمكننا استخراج معلومات أكثر شمولية ودقة دون الحاجة لتكرار البيانات داخل جدول واحد.
لماذا نستخدم Joins؟ وما هي أنواع الـ SQL Joins
غالباً ما يتم توزيع البيانات بين عدة جداول مترابطة داخل قاعدة البيانات. الـ Joins تساعدنا على الوصول لهذه البيانات المترابطة من خلال استعلام واحد يجمع القيم المشتركة ويعرض النتائج بشكل منظم.
1. INNER JOIN
يعيد فقط الصفوف التي تحقق شرط الربط بين الجدولين. أي أنه يظهر القيم المشتركة فقط.
SELECT customers.name, orders.order_date
FROM customers
INNER JOIN orders
ON customers.id = orders.customer_id;
2. LEFT JOIN (أو LEFT OUTER JOIN)
يعرض جميع الصفوف من الجدول الأيسر حتى لو لم يوجد لها تطابق مع الجدول الأيمن. إذا لم يوجد تطابق، قيم الجدول الأيمن تظهر كـ NULL.
SELECT customers.name, orders.order_date
FROM customers
LEFT JOIN orders
ON customers.id = orders.customer_id;
3. RIGHT JOIN (أو RIGHT OUTER JOIN)
يعرض جميع الصفوف من الجدول الأيمن حتى لو لم يوجد لها تطابق مع الجدول الأيسر. الصفوف غير المتطابقة تظهر بقيم NULL في بيانات الجدول الأيسر.
SELECT customers.name, orders.order_date
FROM customers
RIGHT JOIN orders
ON customers.id = orders.customer_id;
4. FULL JOIN (أو FULL OUTER JOIN)
يجمع بين نتائج الـ LEFT JOIN والـ RIGHT JOIN، مما يعرض جميع الصفوف سواء وُجد تطابق أم لا.
SELECT customers.name, orders.order_date
FROM customers
FULL OUTER JOIN orders
ON customers.id = orders.customer_id;
مقارنة بين أنواع الـ Joins
نوع الـ JOIN | ما الذي يعرضه؟ |
---|---|
INNER JOIN | الصفوف المتطابقة فقط بين الجدولين |
LEFT JOIN | كل صفوف الجدول الأيسر + القيم المتطابقة من الجدول الأيمن (غير المتطابقة تظهر NULL) |
RIGHT JOIN | كل صفوف الجدول الأيمن + القيم المتطابقة من الجدول الأيسر (غير المتطابقة تظهر NULL) |
FULL JOIN | كل الصفوف من كلا الجدولين سواء تطابقت أم لا |
الخلاصة
يساعدك فهم أنواع الـ Joins على كتابة استعلامات فعّالة تمكّنك من استخراج بيانات دقيقة من قواعد البيانات. اختيار النوع الصحيح يعتمد على طبيعة المعلومات التي ترغب في الحصول عليها: مشتركة فقط (INNER JOIN) أو شاملة من أحد الجداول (LEFT/RIGHT JOIN) أو مطلقة من الجدولين معاً (FULL JOIN).