SQL – איך להשתמש ב-JOIN

SQL JOIN
SQL JOIN

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

בשפת SQL קיימים סוגי ה-JOIN הבאים:

  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • FULL JOIN
  • CROSS JOIN
SQL JOIN
SQL JOIN

INNER JOIN

ב-INNER JOIN נוכל להשתמש על מנת שיחזיר לנו רשומות בעלות ערכים זהים מטבלאות שונות.

"SQL

שימו לב לשתי הטבלאות שלפניכם:

Student

StudentCourse

אם נרצה לאחד בין הטבלאות כך שנוכל לראות את ה-CourseID של כל קורס שבו לומד כל תלמיד, נוכל להשתמש ב-INNER JOIN על מנת לקשר בין הטבלאות על ידי עמודת ה-StudentID:

SELECT StudentCourse.CourseId, StudentCourse.CourseName, Student.FirstName, Student.LastName, Student.Age
FROM Student
INNER JOIN StudentCourse 
ON Student.StudentId = StudentCourse.StudentId

INNER JOIN Output

LEFT JOIN

ב-LEFT JOIN נוכל להשתמש כאשר נרצה להוסיף את כל השורות של הטבלה השמאלית שתואמות לשורות מהטבלה הימנית.

SQL LEFT JOIN
SQL LEFT JOIN

* שורות אשר אין להם שורה תואמת יחזירו לנו Null
* LEFT JOIN יכול להיקרא גם RIGHT OUTER JOIN

SELECT Student.FirstName, StudentCourse.CourseId
FROM Student
LEFT JOIN StudentCourse --OUTER RIGHT JOIN-- 
ON StudentCourse.StudentId = Student.StudentId

LEFT JOIN Output

RIGHT JOIN

בדיוק כפי שעשינו LEFT JOIN כך נוכל לבצע גם RIGHT JOIN שהיא בדיוק אותה פעולה אבל ההיפך.
ב-RIGHT JOIN נוכל להשתמש כאשר נרצה להוסיף את כל השורות של הטבלה הימנית שתואמות לשורות מהטבלה השמאלית.

SQL RIGHT JOIN
SQL RIGHT JOIN

* שורות אשר אין להם שורה תואמת יחזירו לנו Null
* RIGHT JOIN יכול להיקרא גם LEFT OUTER JOIN

SELECT Student.FirstName, StudentCourse.CourseId 
FROM Student
RIGHT JOIN StudentCourse --OUTER LEFT JOIN--
ON StudentCourse.StudentId = Student.StudentId

RIGHT JOIN Output

FULL JOIN

FULL JOIN מחזיר לנו את התוצאה על ידי שילוב תוצאות LEFT JOIN ו-RIGHT JOIN, גם כאן, שורות אשר אין להן שורה תואמת יחזירו לנו Null.

SQL FULL JOIN
SQL FULL JOIN

שימו לב ל-Code Snippet הבא:

SELECT Student.StudentId, Student.FirstName, StudentCourse.CourseId, StudentCourse.CourseName 
FROM Student
FULL JOIN StudentCourse 
ON StudentCourse.StudentId = Student.StudentId

FULL JOIN Output

CROSS JOIN

ב-CROSS JOIN נוכל להשתמש אם נרצה להחזיר את כל השורות משני הטבלאות.

SELECT Student.StudentId, Student.FirstName, StudentCourse.CourseId, StudentCourse.CourseName 
FROM Student 
CROSS JOIN StudentCourse
 CROSS JOIN - Microsoft SQL Server
CROSS JOIN – Microsoft SQL Server

כפי שניתן לראות, תוצאת השאילתה היא שהוצלבו הטבלאות כך שעבור כל תלמיד נוספו שיעורים, לפי מספר השיעורים שלומד כל תלמיד…
אך אם היינו רוצים לקבל החזר דומה לזה שקיבלנו מה-FULL JOIN, נוכל להוסיף תנאי WHERE:

SELECT Student.StudentId, Student.FirstName, StudentCourse.CourseId, StudentCourse.CourseName 
FROM Student 
CROSS JOIN StudentCourse 
WHERE student.StudentId = StudentCourse.StudentId

CROSS JOIN WHERE Output

לקריאה מורחבת על JOIN באתר של מייקרוסופט יש ללחוץ כאן
להורדת והתקנת Microsoft SQL Server יש ללחוץ כאן

רוצים לשתף את המדריך?

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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

כתיבת תגובה

הזמינו אותי לכוס קפה
buy me coffee

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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