Menu
CoddyTech

JOIN עצמי

חלק מהיחידה יסודות במסלול ה-SQL של Coddy. שיעור 46 מתוך 72.

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

employee_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

לכל עובד יש מנהל, פרט למנהל הבכיר ביותר, וכל מנהל הוא גם עובד.

הבעיה: עבור כל עובד אנחנו רוצים לדעת את שם המנהל.

SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_id

אנחנו מבצעים צירוף בין אותה טבלה, אלא שפעם אחת אנחנו קוראים לה e1 ובפעם השנייה e2. הצירוף מתבצע בין השדות employee_id ו־manager_id.

התוצאה:

employee_idemployee_namemanager_name
1MinkeTemur
2TemurTatjana
3TatjanaMarinela
challenge icon

אתגר

בינוני

הטבלאות והעמודות הזמינות:

  • friends: id, name, friend_id

מצאו זוגות של חברים שהם חברים הדדיים (חברות הדדית מתקיימת כאשר friend_id של אדם א׳ מצביע על אדם ב׳ וגם friend_id של אדם ב׳ מצביע על אדם א׳). הציגו את שמות שני החברים בשורה אחת. תנו לעמודות את השמות friend1 ו-friend2.

הערה: כללו בסעיף WHERE את התנאי f1.id < f2.id (f1 ו-f2 הם הכינויים של שני העותקים של הטבלה), כדי שלא ייכללו זוגות כפולים 

נסו בעצמכם

-- חברו את הטבלה לעצמה כדי ששורה אחת תוכל להציג שני אנשים שונים
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- השאירו רק את הזוגות שמפנים זה לזה
WHERE ____ AND f1.id < f2.id;
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: SQL אונליין