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
נכתב ע"י רם קדם