الربط اليميني RIGHT JOIN
يُستخدم هذا النوع من الربط ما بين جدولين (أو أكثر) وذلك لتحديد بعض السجلات التي تحقق شرط الربط من الجدول اليساري وكافة السجلات من الجدول اليميني، وتكون له البنية العامّة الآتية:
SELECT col_names
FROM tbl_name1
RIGHT [OUTER] JOIN tbl_name2
ON col_name1 = col_name2
مثال
إن كانت قاعدة بيانات أحد المراكز التعليمية تحتوي على الجداول الآتية:
الجدول الأول: جدول الطلاب students
(المفتاح الأولي فيه هو عمود StudentID
والمفتاح الثانوي هو عمود CourseID
للربط مع جدول الدورات التدريبية)
RegDate | CourseID | LastName | FirstName | StudentID |
---|---|---|---|---|
07-JUL-2017 | 0206 | Najjar | Rama | 1147 |
08-NOV-2017 | 0604 | Kordi | Jenan | 1148 |
07-JUL-2017 | 0206 | Bitar | Rahaf | 1149 |
20-AUG-2017 | 0607 | Taweel | Farah | 1150 |
08-NOV-2017 | 0610 | Arab | Rami | 1151 |
24-OCT-2017 | 0803 | Akkad | Aya | 1152 |
08-NOV-2017 | 0504 | Haddad | Abed | 1153 |
20-AUG-2017 | 0801 | Fares | Tasneem | 1154 |
24-OCT-2017 | 0607 | Hamsho | Monther | 1155 |
30-SEP-2017 | 0607 | Abd Allah | Hiba | 1156 |
07-JUL-2017 | 0509 | Khatib | Mohammad | 1157 |
20-AUG-2017 | 0801 | Sharif | Ibrahim | 1158 |
24-OCT-2017 | 0802 | Fehmi | Hanin | 1159 |
20-AUG-2017 | 0204 | Zein | Loujain | 1160 |
08-NOV-2017 | 0503 | Helali | Ammar | 1161 |
الجدول الثاني: جدول الدورات التدريبية courses
(المفتاح الأولي فيه هو عمود CourseID
والمفتاح الثانوي هو عمود DepartmentID
للربط مع جدول الأقسام)
DepartmentID | Lecturer | Course | CourseID |
---|---|---|---|
EN01 | Dr. Reem Hadi | English (Adv) | 0204 |
EN01 | Dr. Shadi Balid | English (Int) | 0206 |
EN02 | Dr. Firas Abd | English (TOEFL) | 0211 |
IT01 | Eng. Nasser Sharif | Artificial Intelligence | 0604 |
IT01 | Eng. Amal Safi | Networks | 0607 |
IT01 | Eng. Salem Najm | ICDL | 0610 |
IT02 | Eng. Nasser Sharif | SQL Programming | 0703 |
IT02 | Eng. Amal Safi | FrontEnd Programming | 0704 |
IT03 | Mr. Maher Siraj | Photoshop Design | 0801 |
IT03 | Ms. Nadia Taleb | Illustrator Design | 0802 |
IT03 | Mr. Maher Siraj | UI Design | 0803 |
الجدول الثالث: جدول الأقسام departments
(المفتاح الأولي فيه هو DepartmentID
)
Head | DepatementName | DepartmentID |
---|---|---|
Dr. Firas Abd | General English | EN01 |
Dr. Saer Raslan | Advanced English | EN02 |
Dr. Osama Najjar | Information Technology | IT01 |
Eng. Amal Safi | Programming | IT02 |
Eng. Fares Ahmad | Graphic Design | IT03 |
فإن تنفيذ الاستعلام الآتي:
SELECT StudentID, FirstName, Course, Lecturer
FROM students st
RIGHT JOIN courses co
ON st.CourseID = co.CourseID;
سيُظهر سجلات الجدول students
(والذي سُمي باسم st
ضمن الشيفرة) المرتبطة فقط بالجدول courses
(والذي سُمي باسم co
ضمن الشيفرة) عبر العمود CourseID
، إضافةً إلى كافة السجلات الموجودة في جدول courses
سواء أكان لها ارتباط بجدول students
أو لم يكن، لتظهر النتائج الآتية:
Lecturer | Course | FirstName | StudentID |
---|---|---|---|
Dr. Shadi Balid | English (Int) | Rama | 1147 |
Eng. Nasser Sharif | Artificial Intelligence | Jenan | 1148 |
Dr. Shadi Balid | English (Int) | Rahaf | 1149 |
Eng. Amal Safi | Networks | Farah | 1150 |
Eng. Salem Najm | ICDL | Rami | 1151 |
Mr. Maher Siraj | UI Design | Aya | 1152 |
Mr. Maher Siraj | Photoshop Design | Tasneem | 1154 |
Eng. Amal Safi | Networks | Monther | 1155 |
Eng. Amal Safi | Networks | Hiba | 1156 |
Mr. Maher Siraj | Photoshop Design | Ibrahim | 1158 |
Ms. Nadia Taleb | Illustrator Design | Hanin | 1159 |
Dr. Reem Hadi | English (Adv) | Loujain | 1160 |
Dr. Firas Abd | English (TOEFL) | NULL | NULL |
Eng. Nasser Sharif | SQL Programming | NULL | NULL |
Eng. Amal Safi | FrontEnd Programming | NULL | NULL |
التوافقية
SQLServer | SQLite | Oracle | PostgreSQL | MySQL |
---|---|---|---|---|
نعم | لا | نعم | نعم | نعم |