fbpx

JOIN SQL הסבר זה מתמקד בטכניקות שונות לכתיבת פקודת ה JOIN. במדריך SQL זה נלמד את הטכניקה התקנית (ANSI).  הרעיון הכללי אשר יבוא לידי ביטוי בדוגמאות הבאות הינו :

v    החלפת הפסיק המפריד בין הטבלאות השונות בפקודת JOIN.

v    כתיבת התנאי המקשר בין הטבלאות בפקודת ON במקום בפקודת WHERE.

Equi Join – שילוב 2 טבלאות

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 פעמים.

 

Equi JoinNon

 

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

 

OUTER JOIN – Right OUTER JOIN

 

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

 

OUTER JOIN – Left OUTER JOIN

 

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

  

OUTER JOIN – Full OUTER JOIN

פקודת 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

 

SELF JOIN

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

נכתב ע"י רם קדם