JOIN SQL הסבר זה מתמקד בטכניקות שונות לכתיבת פקודת ה JOIN. במדריך SQL זה נלמד את הטכניקה התקנית (ANSI). הרעיון הכללי אשר יבוא לידי ביטוי בדוגמאות הבאות הינו :
v החלפת הפסיק המפריד בין הטבלאות השונות בפקודת JOIN.
v כתיבת התנאי המקשר בין הטבלאות בפקודת ON במקום בפקודת WHERE.
SELECT emp.last_name , emp.salary , dep.department_name FROM employees emp, departments dep WHERE emp.department_id = dep.department_id
ê
SELECT emp.last_name , emp.salary , dep.department_name FROM employees emp JOIN departments dep ON emp.department_id = dep.department_id
Equi Join – שילוב 3 טבלאות או יותר
עבור כל טבלה חדשה מעבר לשתי הטבלאות הראשונות אנו נכתוב את פקודת JOIN…ON מחדש:
SELECT emp.last_name , emp.salary , dep.department_name , loc.city FROM employees emp, departments dep, locations loc WHERE emp.department_id = dep.department_id AND dep.location_id = loc.location_id
ê
SELECT emp.last_name , emp.salary , dep.department_name, loc.city FROM employees emp JOIN departments dep ON emp.department_id = dep.department_id JOIN locations loc ON dep.location_id = loc.location_id
עבור כל X טבלאות, נכתוב את פקודת JOIN…ON X-1 פעמים.
SELECT emp.last_name , emp.salary , job.grade_level FROM employees emp, job_grades job WHERE emp.salary BETWEEN job.lowest_sal AND job.highest_sal
ê
SELECT emp.last_name , emp.salary , job.grade_level FROM employees emp JOIN job_grades job ON emp.salary BETWEEN job.lowest_sal AND job.highest_sal
SELECT emp.last_name , emp.salary , dep.department_name FROM departments dep , employees emp WHERE dep.department_id (+) = emp.department_id
ê
SELECT emp.last_name , emp.salary , dep.department_name FROM departments dep RIGHT OUTER JOIN employees emp ON dep.department_id = emp.department_id
SELECT emp.last_name , emp.salary , dep.department_name FROM departments dep , employees emp WHERE dep.department_id = emp.department_id (+)
ê
SELECT emp.last_name , emp.salary , dep.department_name FROM departments dep LEFT OUTER JOIN employees emp ON dep.department_id = emp.department_id
פקודת Full OUTER JOIN ייחודית לסינטקס ה- ANSI, לא ניתן לבצע Full OUTER JOIN ע"י ה-Non ANSI JOIN (באמצעות כתיבת סימן ה (+) בשני הצדדים).
SELECT emp.last_name , emp.salary , dep.department_name FROM departments dep FULL OUTER JOIN employees emp ON dep.department_id = emp.department_id
SELECT emp.employee_id ,emp.last_name , emp.manager_id , mng.last_name FROM employees emp , employees mng WHERE emp.manager_id = mng.employee_id
ê
SELECT emp.employee_id ,emp.last_name , emp.manager_id , mng.last_name FROM employees emp JOIN employees mng ON emp.manager_id = mng.employee_id
הוספת משפטי SQL שונים לאחר משפט JOIN
לאחר שסיימנו לכתוב את פקודת JOIN בין הטבלאות, ניתן להמשיך ולכתוב את משפט ה SQL בכל אופן שנרצה (להוסיף עוד תנאי, לשנות את סדר המיון וכדומה) רק חשוב להמשיך ולהקפיד על מבנה העמודה : שם_עמודה.כינוי_שם_טבלה.
הוספת תנאי נוסף :
SELECT emp.last_name , emp.salary , dep.department_name FROM employees emp JOIN departments dep ON emp.department_id = dep.department_id WHERE emp.department_id = 90
מיון התוצאות לפי שכר העובד :
SELECT emp.last_name , emp.salary , dep.department_name FROM employees emp JOIN departments dep ON emp.department_id = dep.department_id ORDER BY emp.salary DESC
נכתב ע"י רם קדם