מדריך SQL זה מתמקד בפקודת ה Self Join. מדריך זה הינו חלק מרשימת פוסטים הנוגעים לפקודת ה JOIN
ב SQL SERVER. כדי להגיע לפוסטים הנוספים ניתן להעזר בקישורים הבאים :

  • שילוב טבלאות באמצעות Inner Join – בשילוב נתונים מטבלאות על סמך ערכים משותפים לשתי הטבלאות
  • שילוב טבלאות באמצעות Outer Join – מתמקד בשילוב נתונים מטבלאות תוך הצגת כל הנתונים מהטבלה האחת ללא קשר לנתונים המוצגים בטבלה האחרת.
  • שילוב טבלאות באמצעות Self Join – שילוב נתונים מאותה טבלה לעצמה.

פקודת Self Join

image

טבלה זו מציגה היררכיה מסויימת של עובדים ומנהליהם כאשר מספר עובד מסויים יכול להיות שווה למספר מנהל

(1) משה   ß (2) יוסי 

               ß (3) דוד   ß (4) אלי 

                                ß (5) רועי   ß (6) יובל 

 

בטבלאות מסוג זה, לעתים, נרצה להציג נתונים המסתמכים על הקשר הפנימי של הטבלאות (מספר עובד שווה למספר מנהל).
לדוגמא, מהו שמו של המנהל של רועי? כדי לקבל תשובה נבדוק מהו מספר המנהל של רועי (3) ולאחר מכן נבדוק לאיזה מספר עובד מספר מנהל זה מתאים (דוד
).
אנו יכולים להשתמש בקשר זה על מנת ליצור טבלה המציגה את שם העובד ושם מנהלו
:

 

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

מכיוון שאנו משלבים אותה טבלה לעצמה, אנו למעשה קוראים לאותה טבלה פעמיים, כל פעם בכינוי אחר. צורת שילוב טבלאות זו נקראת Self Join.

במשפט  ON אנו מגדירים את הקשר הפנימי, במקרה זה אנו משווים בין מספר המנהל של העובד, לבין מספר העובד של המנהל (בפעם השניה אנחנו מתייחסים לטבלה כטבלת "מנהלים").

נערך ע”י אלעד פלג