וובמאסטר - תיכנות ובניית אתרים
שאלות ותשובות:
הוסף תשובה

מהו Inner Join ומדוע צריך אותו?



תגיות: SQL‏  /  JOIN‏  /  INNER JOIN‏  
הוסף תשובה  |  הוסף הערה
1 תשובות לשאלה זו
הוסף תשובה
מה זה אינר ג'וין? זה נולד מהרעיון שבמסד נתונים לא צריכות להיות כפילויות, לדוגמא:
יש לי טבלת פורום. עבור כל רשומה בטבלה [שמציינת הודעה, כמובן], אני רוצה לקבל את פרטי שולח ההודעה: שם, שם משפחה, מס' יוזר וכו'... אז מה שבעצם אני צריך לעשות הוא לשמור בכל רשומה את פרטי השולח. לא חבל?
במקום זה אני פשוט אציין את מספר שולח ההודעה בכל רשומה, ומשם אני אקשר את עצמי לטבלת משתמשים, שבה אוכל לקבל את פרטי השולח. כלומר: מנענו כפילות נתונים - אני שומר אותם פעם אחת ומקשר אליהם רק עם מספר שולח ההודעה...

עד כאן ברור? יופי.
אז איך זה קשור לאינר ג'וין - התשובה היא שאינר ג'וין מטפל בקטע הטכני: שאילתה ששולפת משתי טבלאות או אפילו יותר.
התחביר הוא בערך כך:


SELECT messages.userid, users.userid, users.name
FROM massages INNER JOIN users
ON (massages.userid=users.userid)


מה שעשינו כאן זה בעצם צרפנו שתי טבלאות, ויצרנו כאילו רשומה אחת גדולה שבה שדות משתי הטבלאות. איך ידענו איזו רשומה לצרף לאיזו רשומה? לפי פסוקית ה ON: מתי שהשדה userid בטבלה users שווה לשדה userid בטבלה messages.

עוד דבר קטן: אינר ג'וין מחזירה רק רשומות מתאימות משתי הטבלאות, אך אם יש רשומה שאין לה התאמה, כמו למשל הודעה שרשם משתמש אשר אינו רשום בפורום - הרשומה לא תוחזר.

יש עוד סוגים של ג'וין כגון Outer Join (החזרת רשומות שאין להן התאמה מלאה), Self Join - צרוף טבלה אל עצמה, Full Outer Join - החזרת גם רשומות שאינן מתאימות וכו'...
אוריקס, 5/5/2004
הוסף תשובה  |  הוסף הערה
הוסף תשובה לשאלה זו:




וובמאסטר © כל הזכויות שמורות