MyMisPal
→ دروس SQL
الدرس 8 من 12

LEFT JOIN وأنواع الربط

INNER JOIN تخفي الصفوف اللي ما لها تطابق. قسم Research ما فيه موظفين، فما يطلع في الربط العادي. LEFT JOIN تحتفظ بكل صفوف الجدول الأيسر، واللي ما له تطابق تجي أعمدته من الجدول الأيمن NULL.

ABINNER JOINالصفوف المتطابقة في الجدولين فقط
ABLEFT JOINكل صفوف A + المطابق من B
ABRIGHT JOINكل صفوف B + المطابق من A
ABFULL OUTER JOINكل الصفوف من الجدولين

A = الجدول بعد FROM، و B = الجدول بعد JOIN.

SQL
SELECT d.name, e.first_name
FROM departments d
LEFT JOIN employees e ON d.dept_id = e.dept_id
ORDER BY d.name;

حيلة مشهورة: LEFT JOIN مع IS NULL تجيب لك «اللي ما عنده شي»، مثل المنتجات اللي ما انطلبت أبداً:

SQL
SELECT p.name
FROM products p
LEFT JOIN order_items oi ON p.product_id = oi.product_id
WHERE oi.order_id IS NULL;

الربط الذاتي (Self Join): جدول الموظفين فيه manager_id يشير لموظف ثاني في نفس الجدول. نربط الجدول بنفسه باسمين مختلفين:

SQL
SELECT e.first_name AS employee, m.first_name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.emp_id;
في MySQLMySQL يدعم LEFT JOIN وRIGHT JOIN لكن ما يدعم FULL OUTER JOIN. البديل: LEFT JOIN ... UNION ... RIGHT JOIN.

تمارين

تمرين 1

اعرض اسم كل قسم name وعدد موظفيه، حتى الأقسام اللي ما فيها موظفين (تطلع 0).

تمرين 2

اعرض أسماء العملاء name اللي ما سووا أي طلب.

لقيت خطأ في هذي الصفحة، أو عندك فكرة تحسّن الموقع؟