PracticU

פקודת Select עם Self-Join

בלי כתוביותעם כתוביות
PracticU › קורס DBA אפליקטיבי - שפת SQL למתחילים › פקודת Select עם Self-Join
מילון מושגים:
Join - פעולת SQL שמשלבת שורות משתי טבלאות או יותר על בסיס קשר ביניהן.
טבלה - מבנה במסד נתונים שמאחסן נתונים בשורות ועמודות. כל שורה היא רשומה וכל עמודה היא שדה.
עמודה - שדה בטבלת מסד נתונים שמחזיק ערך מסוג מסוים עבור כל שורה, למשל שם או תאריך.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.

פקודת Select עם Self-Join
Self join הוא JOIN של טבלה עם עצמה. הוא מתאים כשכל שורה בטבלה מתייחסת לשורה אחרת באותה טבלה, כמו עובד ובוס שנמצאים בטבלת Employees אחת.
השלבים העיקריים
1. הטבלה: בטבלת Employees לכל עובד יש עמודת ReportsTo, שמכילה את המספר של הבוס שלו. לדוגמה, עובד 6 מדווח לעובד 5, ועובד 8 מדווח לעובד 2.
2. שם העובד והבוס: שם משפחה ושם פרטי מחוברים לעמודה אחת בעזרת + ורווח, ובאותה שורה מוצג גם שם הבוס.
3. שני כינויים: נותנים לטבלה שני כינויים, E1 ו-E2. הכינויים מתנהגים כאילו מדובר בשתי טבלאות נפרדות, גם אם הן זהות.
4. תנאי ה-JOIN: E1.ReportsTo = E2.EmployeeID. E1 הוא העובד, ו-E2 הוא הבוס שלו, כי מספר הבוס שבשורה של העובד שווה למספר העובד בשורה של הבוס.
5. שם מעורפל: אם מופיעה שגיאה על עמודה מעורפלת, כמו EmployeeID שמופיעה בשתי הטבלאות, מוסיפים לפניה את הכינוי של הטבלה.
6. בדיקה: עם SELECT * רואים שבכל שורה מופיעים העובד והבוס שלו.
פקודות והגדרות
FROM Employees E1 JOIN Employees E2 ON E1.ReportsTo = E2.EmployeeID, E1.LastName + ' ' + E1.FirstName.
שימו לב
אם קשה להבין, כדאי לדמיין את שתי הטבלאות כשתי טבלאות שונות לגמרי, ולחבר ביניהן לפי השדה. כך הקוד נשאר ברור גם כשמדובר באותה טבלה.
השיעור מסתיים ביכולת לחבר טבלה לעצמה, ולהציג לכל עובד את הבוס שלו באותה שורה.
השיעור הבא בקורס: פקודת Select עם Group By

פרקי ההרצאה: פקודת Select עם Self-Join

  1. 00:00

    מבוא: JOIN של טבלה לעצמה

  2. 00:38

    דוגמה: טבלת עובדים ומנהליהם

  3. 01:59

    איחוד שם פרטי ושם משפחה לעמודה אחת

  4. 02:54

    כינוי E1 ו-E2 לאותה טבלה

  5. 04:13

    תנאי החיבור בין מנהל לעובד

  6. 06:03

    שליפת שם עובד ושם מנהל יחד

  7. 07:16

    תיקון פסיק מיותר ובדיקת התוצאה

תמלול ההרצאה: פקודת Select עם Self-Join

הטקסט המלא של הדקות הראשונות בהרצאה «פקודת Select עם Self-Join» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:19

    שלום וברוכים הבאים להרצאה על ג'ויין מיוחד שנקרא סלף ג'ויין, שזה סוג מיוחד של ג'ויין שאנחנו הולכים לראות אותו.

  2. 00:30

    זה אומר ג'ויין עם עצמך. נפתח sql management studio ונתחבר לשרת שלנו ונראה מקרה מיוחד שבו טבלה צריכה להתחבר לעצמה.

  3. 00:45

    מה זאת אומרת? לדוגמה בטבלת עובדים, עובדים employees, אתם תראו שבטבלה הזאת יש לנו עובד כזה, כזה כזה השם שלו שמשפחה שמשפחה שם פרטי תפקיד שלו כל מיני שטויות מתי הוא נולד מתי לקחו אותו לעבודה כתובת מגורים שלו אבל יש לו גם הבוס שימו לב ריפורטס טור זה מי הבוס שלו והבוס של עובד מספר 6 זה עובד מספר 5 העובד מספר 8 הבוס שלו זה עובד מספר 2 אוקיי הבנתם

  4. 01:31

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

  5. 02:05

    לעמודה אחת בתוך סלקט אתם רואים הוא יעשה לי אותם עכשיו כעמודה אחת רק אני רוצה להוסיף פה רווח אתם רואים הוא הדביק אותם יותר מדי אני עושה אמרת לו העמודה הזאת זה last name ועוד רווח ועוד first name יופי עכשיו אז שם עובד אני רוצה עכשיו לעשות ליד שם כל עובד שם של הבוס שלו עובד הזה הבוס שלו זה עובד מספר 2 זאת אומרת אני רוצה לראות דוד ננסי לידה פה לא

  6. 02:49

    כתוב 2 פה כתוב פיולר אנדרי כי זה עובד מספר 2 השתיים הזה זה השתיים הזה וחמש זה זה זאת אומרת קינג רוברט המנהל שלו זה עובד מספר חמש הוא בוצ'ן סטיבן אוקיי סטיבן זאת אומרת למעשה אני רוצה לצרף את הטבלה הזאת עם עצמה שוב לפי זה שהשדה הזה זהה בקופי של עצמו לשדה הזה אוקיי זה קצת מסובך אבל נראה לי שתבינו

  7. 02:55

    בסוף אז איך אני עושה את זה אני עושה את זה E1 אני נותן לטבלה כינוי E1, אני חייב לתת לה כינוי join.

  8. 03:39

    אותה טבלה, שימו לב, אני עושה join עם עצמו. אני עושה join עם עצמו וקורא לאותה טבלה E2. זאת אומרת, הוא עושה join ואין משכפל בזיכרון את הטבלה הזאת עם פלואי, אבל נותן לה כינוי E2. אז E1 זה המקורי, join עם E2, כאשר שדה ב-E1 שנקרא, איך הוא נקרא השדה המקורי לפני השטויות שכתבתי?

  9. 04:11

    אמפלואי איידי נכון אמפלואי איידי לא בוס איידי רפורטס 2 רפורטס 2 בטבלה המקורית בטבלה המקורית הנה אולי יהיה לכם ככה יותר ברור אני מסדר לכם את זה בטבלה המקורית שדה נקרא זה שווה ל-e2 נקודה איפה שרפורטס 2 פה במקורי שווה למה לאמפלואי איידי בקופי לאמפלואי בקופי למעשה אני עושה join כאילו זה טבלאות שונות לחלוטין אני עושה עם פלואי עם

  10. 05:00

    פלואי אבל זה לא מעניין אותי מבחינתי זה טבלאות שונות אחד נקראת E1 השנייה נקראת E2 זה שהם דומים והשמות שלהם שזה אותם נתונים זה לא מעניין מבחינתי יש לי שני קופיס כאשר אני מחבר ביניהם שזה מתחבר לזה אם זה מסבך אתכם תחשבו אל תחשבו שיש פה טבלה אחת תחשבו שיש פה סלקט כוכבית פרום פעמיים הנה אני מראה לכם את זה פעמיים הנה אני עושה

  11. 05:31

    את זה בכחול F5 כאילו יש לי פה שתי טבלאות כאלו לא משנה שזה שתי טבלאות ואני אומר תקשיב תחבר לאותן ככה איפה שהשתיים פה תחבר עם השתיים פה שתיים פה תחבר עם השתיים פה הטבלה למעלה קראתי לה E1 הטבלה למטה קראתי לה E2 בדיוק כמו ג'וין רגיל זה רק מבלבל אתכם שזה בדיוק אותה טבלה זה מבלבל אתכם וזה בדיוק מה שאני עושה פה אני אומר טבלת אימפלואי נקראת E1

  12. 06:03

    אותה טבלת אימפלואי הקופי שלה נקרא E2 ותחבר אותם לפי שדה ריפורטס 2 שווה לאמפלואי ID. ריפורטס 2, ריפורטס 2 שווה לאמפלואי ID. ואז תראה לי דבר כזה, תראה לי מתוך E2 את ה-First ו-Last name, זה נקרא שם בוס, וב-E1 אותם נתונים זה שם עובד.

  13. 06:45

    זאת אומרת, בטבלת E1, שזה העליונה, זה שם עובד, אתם רואים? שם עובד, ובטבלת E2 זה בעצם השם של הבוס שלו.

  14. 07:06

    אני יודע שזה מה זה מבלבל אבל תסתכלו על זה טוב ואתם תתחילו להבין את זה לאט לאט E2 E2 Join E2 Employee ID Ambiguity זה זה זה לא צריך מה יש לנו פה פסיק מיותר אל תיבהלו אם זה לא עובד אז מתקנים וזה באמת הצליח חבר'ה תראו קיבלתי שם עובד והבוס שלו חבר'ה כשאני עושה Join אני לוקח

לקורס המלא: קורס SQL ו‑DBA אפליקטיבי

ההרצאה הקודמת: פקודת Select עם Join

ההרצאה הבאה: פקודת Select עם Group By

הרצאות קשורות מקורסים אחרים

  • Console Self Host
  • Qlik Join - חלק 1
  • פקודת ls בלינוקס
  • פקודת Foreach

קורסים נוספים במסלול

  • קורס NoSQL - MongoDB
  • קורס SSIS
  • קורס BI - ניתוח מסדי נתונים - Qlik Sense
  • קורס Power BI