לחברות המעוניינות בשירותי פרילנס או סדנאות של אנליסט, ניתן לפנות אליי [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]
*** לפודקאסט של הבלוג לחצו כאן ***
פרק קודם – פרק 4: פונקציות
פרק הבא – פרק 6: חיבורי טבלאות מורכבים