English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ستعلم في هذا الدرس كيفية استخدام انضمام الأيمن في SQL للحصول على بيانات من جداولين.
RIGHT JOIN هوLEFT JOINعكس ذلك تمامًا. يرجع جميع السجلات في الجدول الأيمن بالإضافة إلى السجلات التي تتناسب مع الشروط الاتصال في الجدول الأيسر.
الانضمام الأيمن هونوعًا من الانضمام الخارجيلذلك يُسمى أيضًاright outer joinهناك أنواع أخرى من الانضمام الخارجيالانضمام الأيسروالانضمام الكاملهذا الرسم البياني المثلثي يوضح كيف يعمل الانضمام الأيمن.
ملاحظة:الانضمام الخارجي هو نوع من الاتصال الذي يحتوي على سجلات في الناتج، حتى لو لم تكن هناك تطابق بين سجلات الجداول اللتين يتم ربطها.
للمعرفة الواضحة لهذا، دعونا نرى ما يليemployeesوdepartments表。
+--------+--------------+------------+---------+ | emp_id | emp_name | hire_date | dept_id | +--------+--------------+------------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 4 | | 2 | Tony Montana | 2002-07-15 | 1 | | 3 | Sarah Connor | 2005-10-18 | 5 | | 4 | Rick Deckard | 2007-01-03 | 3 | | 5 | Martin Blank | 2008-06-24 | NULL | +--------+--------------+------------+---------+ | +---------+------------------+ | dept_id | dept_name | +---------+------------------+ | 1 | Administration | | 2 | Customer Service | | 3 | Finance | | 4 | Human Resources | | 5 | Sales | +---------+------------------+ | |
表: employees | 表: departments |
现在,假设您要检索所有部门的名称以及在该部门工作的员工的详细信息。但是,在实际情况下,可能有些部门目前没有员工在工作。好吧,让我们找出答案。
以下语句通过使用通用的dept_id字段将employee和department表连接在一起,检索所有可用部门以及该部门员工的id,名称,雇用日期。
SELECT t1.emp_id, t1.emp_name, t1.hire_date, t2.dept_name FROM employees AS t1 RIGHT JOIN departments AS t2 ON t1.dept_id = t2.dept_id ORDER BY dept_name;
提示:在联接查询中,左边的表是在JOIN子句中最左边出现的表,右边的表是在最右边出现的表。
执行上述命令后,您将获得如下输出:
+--------+--------------+------------+------------------+ | emp_id | emp_name | hire_date | dept_name | +--------+--------------+------------+------------------+ | 2 | Tony Montana | 2002-07-15 | Administration | | NULL | NULL | NULL | Customer Service | | 4 | Rick Deckard | 2007-01-03 | Finance | | 1 | Ethan Hunt | 2001-05-01 | Human Resources | | 3 | Sarah Connor | 2005-10-18 | Sales | +--------+--------------+------------+------------------+
الانضمام الصحيح يشمل جميع السطور في جدول الأقسام، بغض النظر عما إذا كانت قيمة عمود dept_id في جدول الموظفين تتطابق أم لا، لأنك يمكنك بوضوح رؤية أن حتى إذا لم يكن هناك موظفون في هذا القسم، فإن "Customer Service" سيتم تضمينه.
ملاحظة:إذا كان هناك سطر في الجدول الأيمن، لكن لا يوجد سطر متطابق في الجدول الأيسر، فإن السطور الناتجة من الاتصال ستتضمن قيم NULL لجميع الأعمدة من الجدول الأيسر.