SQL LEFT JOIN

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

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

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

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

SELECT <רשימת עמודות> FROM <1טבלה> LEFT JOIN <טבלה2> ON <עמודה מטבלה 2> = <עמודה מטבלה 1>

בחלק מבסיסי הנתונים נקרא ה - Left Join בשם Left Outer Join. כאמור משפטי LEFT JOIN יחזירו את כל השורות בטבלה השמאלית גם אם אין התאמה בינם לבין העמודה המתאימה בטבלה הימנית. כמו כן יחזרו גם כל השורות מהטבלה הימנית אשר להם נתון משותף בעמודות ה - Join.

על מנת להמחיש זאת טוב יותר הבה נשתמש בטבלה הבאה ששמה בבסיס הנתונים יהיה Products:

Status Price Name ID
פעיל 100 מוצר 1 123
פעיל 246 מוצר 2 124
לא פעיל 200 מוצר 3 125
פעיל 239 מוצר9 129

כמו כן נניח שבבסיס הנתונים שלנו טבלה נוספת ששמה PSales:

Sales ID
50,000 123
20,000 124
3800 125
3409 126
בדוגמה הבאה נבקש לראות את שמות המוצרים מטבלת Products עם נתוני המכירה שלהם מטבלת Sales:

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

הטבלה השמאלית בשאילתה שבדוגמה היא: Products ולכן התוצאה של השאילתה תהיה: {מוצר 1, 50000; מוצר 2, 20000; מוצר 3, 3800, מוצר 9, }.
מוצר 126 בטבלה Psales לא יחזור משום שאין לו ערך משותף בעמודה ID עם הטבלה השמאלית. למוצר 9 לא יחזור ערך לעמודה Sales מהטבלה Psales משום שאין לו ערך משותף עם טבלה זו, אולם הוא עצמו חוזר משום שכל השורות מהטבלה השמאלית חוזרות ב - Left Join.

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