LEFT JOIN وأنواع الربط
INNER JOIN تخفي الصفوف اللي ما لها تطابق. قسم Research ما فيه موظفين، فما يطلع في الربط العادي. LEFT JOIN تحتفظ بكل صفوف الجدول الأيسر، واللي ما له تطابق تجي أعمدته من الجدول الأيمن NULL.
INNER JOINالصفوف المتطابقة في الجدولين فقط
LEFT JOINكل صفوف A + المطابق من B
RIGHT JOINكل صفوف B + المطابق من A
FULL 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.