SQL JOIN

במשפטי SQL שבהם מעורבת הפסוקית JOIN נשתמש כאשר נרצה לאחזר מידע מטבלאות נפרדות בהתבסס על מידע המשותף לכולן. למעשה באמצעות ה - JOIN בין הטבלאות אנו יוצרים טבלה חדשה, זמנית, שעליה אנו יכולים לעבוד. פעולות שנבצע על תוצאות JOIN לא תשפענה על הטבלאות עצמן, שאותן "שיתפנו" באמצעות ה - JOIN.

חשוב לזכור שהטעם ב - JOIN הוא לשתף מידע בין טבלאות בלא שהמידע יחזור על עצמו שוב ושוב. לכן ,ישנה חשיבות רבה מאוד לבצע את ה - JOIN כאשר הקשר בין הטבלאות מבוסס על המפתח הייחודי של הטבלאות הנ"ל (Primary Key).

תנאים בסיסיים לקיומו של משפט JOIN:

1. Join יכול להתבצע רק בין שתי טבלאות ויותר.
2. Join לא יכול להתקיים בין טבלאות אם אין בכל אחת מהן לפחות עמודה אחת בעלת סוג מידע (Data Type) זהה .
3. Join לא יכול להתקיים אם העמודות בעלות סוג המידע הזהה אינן מכילות לפחות ערך אחד זהה.

המבנה הכללי של משפט JOIN יהיה:

SELECT <רשימת עמודות> FROM <שם הטבלה> JOIN <שם טבלה אחרת> ON <שם עמודה> = <שם עמודה>

משפט JOIN נקרא לפעמים גם INNER JOIN. מרבית בסיסי הנתונים אינם דורשים להוסיף את האופרטור INNER למשפט ה - SQL.

משפטי JOIN יחזירו תוצאות כאשר ישנה לפחות התאמה אחת בשתי הטבלאות. כלומר כאשר ישנו ערך משותף אחד.

על מנת להמחיש זאת טוב יותר הבה נשתמש בטבלה הבאה ששמה בבסיס הנתונים יהיה Products:
Status Price Name ID
פעיל 100 מוצר 1 123
פעיל 246 מוצר 2 124
לא פעיל 200 מוצר 3 125

כמו כן נניח שבבסיס הנתונים שלנו טבלה נוספת ששמה PSales:
Sales ID
50,000 123
20,000 124
3800 125

בדוגמה הבאה נבקש לראות את שמות המוצרים מטבלת Products עם נתוני המכירה שלהם מטבלת Sales:

SELECT Products.Name, PSales.Sales FROM Products Join PSales ON Products.ID = Sales.ID;

התוצאה של משפט זה תהיה: {מוצר 1, 50000; מוצר 2, 20000; מוצר 3, 3800}

בפרקים הבאים נכיר סוגי JOIN אחרים. להלן רשימה המסכמת את סוגי ה - JOIN השונים ומתארת את תפקידיהם:

סוג תפקוד
Join מחזיר שורות אשר יש להן התאמה בערך אחד לפחות בשתי הטבלאות
Right Join מחזיר את כל השורות מהטבלה הימנית + כל השורות מהטבלה השמאלית אשר יש להן התאמה עם הטבלה הימנית.
Left Join מחזיר את כל השורות מהטבלה השמאלית + כל השורות מהטבלה הימנית אשר יש להן התאמה עם הטבלה השמאלית.
Full Join מחזיר שורות אם יש להן התאמה באחת הטבלאות.



 
© 2010-2013  www.Devschool.co.il | מדיניות פרטיות | תנאי שימוש