פרק 5: חיבור טבלאות בשפת SQL

נכתב על ידי יובל מרנין.
לחברות המעוניינות בשירותי פרילנס או סדנאות של אנליסט, ניתן לפנות אליי [email protected]

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

דוגמה: 

select

       *

from

       orders

left join

       customers on orders.customer_id=customers.customer_id

 

הסבר:

באמצאות left join ביקשנו מה דטה-בייס לחבר בין שני הטבלאות כאשר השדה המשותף הוא  customer_id.

כדי להורות לדטה-בייס לפי איזה שדה אנחנו רוצים לחבר בין הטבלאות משתמשים בהוראות on. 

 

חיבור מסוגLeft Join 

 כפי שראינו בדוגמה מעל בחיבור מסוג left join הטבלה המחוברת מוסיפה ערכים לשורות בטבלת הבסיס שאליה חיברנו.

 

למה משמש left join :

חיבור מסוג left join הוא החיבור הבסיסי ביותר שבאמצעותו מחברים בין טבלאות. כל פעם שנצטרך להוסיף נתונים בין שני טבלאות סביר שנשתמש בחיבור מסוג זה. 

 

חיבור מסוג Inner Join

 חיבור מסוג inner join דומה ל nleft joi אבל החיבור משאיר רק את המקרים בהם השורות המשותפות לשני הטבלאות

 

לדוגמה: בשליפה

 

select

       *

from

       orders

inner join customers on orders.customer_id=customers.customer_id

 

ישארו רק המקרים שבשני הטבלאות יש ערך  ב customer_id

 

למה משמש inner join:

inner join  משמש לחיתוך בין טבלאות בהם נרצה להשיאר את המקרים המשתופים לשני הטהלאות למשל כאשר נרצה לשלוף הזמנות רק של הלקוחות שמופיעים בטבלת VIP.

 

חיבור מסוג Full Join

בחיבור full join נחבר את כל המקרים שמופיעים בשני טבלאות

לדוגמה:

 

select

       orders.*,

       customers.city

from

       orders

full join

       customers on customers.customer_id= orders.customer_id

 

חשוב לשים לב שלא כל הדטה-בייסים  תומכים בהוראת full join.
 

חיבורfull join  משמש למקרים בהם נרצה לחבר את כל המקרים שמופיעים בטבלאות גם אם בשדה שנחבר לפיו יש מקרים חסרים. למשל, כאשר מקבלים שני טבלאות של הזמנות משני מקורות שונים אך באחד מהמקורות הנתונים היו משובשים ולא תמיד הופיע המספר לקוח. חיבורים מסוג זה ניתן לבצע גם בהוראת union.

 

Cross join

חיבורcross join  מבצע מכפלה קרטזית בין שני טבלאות ופורס את מרחב האפשרויות. בחיבור מסוג זה  אין צורך בהוראת on.

 

חשוב לשים לב  – כיוון ש- cross join מבצע מכפלה קרטזית הוא דורש משאבי חישוב רבים!

 

 

select

       customer_state,

       customer_id

from

       orders

cross join
      customers




תרגול שפת SQL

באתר strata scratch תמצאו תרגילים רבים עם שאלות עסקיות מורכבות, וממשק המאפשר כתיבה והרצה של שאילתות כך שתוכלו לבדוק האם הפתרון שלכם נכון. באתר יש גם אפשרות לתרגל תרגילים ב- Python.

התרגול באתר הוא ללא עלות, אך אפשר להירשם כדי לקבל גישה לתרגילים חדשים ופתרונות לכל התרגילים (גילוי נאות – רישום לאתר דרך הקישור מתגמל אותי בעמלה קטנה, וגולשים המגיעים דרך הקישור יכולים להשתמש בקוד קופון yuval20 על מנת לקבל 20% הנחה).

 

נכתב על ידי יובל מרנין,
לשרותי ניתוח נתונים ויצירת דוחות BI ניתן לפנות אליי ב- לינקדאיןפייסבוק או במייל: [email protected]

*** לפודקאסט של הבלוג לחצו כאן *** 

Yuval Marnin

לחברות המעוניינות בשירותי פרילנס או מנטורינג של אנליסט, ניתן לפנות אליי ל[email protected]