JOIN עצמי
חלק מהיחידה יסודות במסלול ה-SQL של Coddy. שיעור 46 מתוך 72.
צירופים עצמיים הם סוגים שונים של צירופים. עד עכשיו דיברנו על צירופים של כמה טבלאות, אבל בצירופים עצמיים מצרפים את אותה הטבלה לעצמה. דוגמה קלאסית לכך היא טבלה של עובדים.
| employee_id | employee_name | manager_id |
| 1 | Minke | 2 |
| 2 | Temur | 3 |
| 3 | Tatjana | 4 |
| 4 | Marinela |
לכל עובד יש מנהל, למעט המנהל הבכיר ביותר, וכל מנהל הוא גם עובד.
הבעיה: עבור כל עובד אנחנו רוצים לדעת את שם המנהל.
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_id | employee_name | manager_name |
|---|---|---|
| 1 | Minke | Temur |
| 2 | Temur | Tatjana |
| 3 | Tatjana | Marinela |
אתגר
בינוניהטבלאות והעמודות הזמינות:
friends:id,name,friend_id
מצא זוגות של חברים שהם חברים הדדיים (חברות הדדית מתקיימת כאשר ה־friend_id של אדם א' מצביע על אדם ב' וגם ה־friend_id של אדם ב' מצביע על אדם א'). הצג את שמות שני החברים בשורה אחת. תן לעמודות את השמות friend1 ו־friend2.
הערה: כלול בתנאי WHERE את הקריטריון friend1.id < friend2.id כדי שלא ייכללו זוגות כפולים
נסו בעצמכם
-- חברו את הטבלה לעצמה כדי ששורה אחת תוכל להציג שני אנשים שונים
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- השאירו רק את הזוגות שמצביעים זה על זה
WHERE ____ AND f1.id < f2.id;השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
2תנאים
יסודות התנאיםמילת המפתח ANDמילת המפתח ORמילת המפתח NOTשילוב של תנאים מרוביםסוגרייםערכים בוליאניים3פורמט החזרה ספציפי
ערכי Nullמיון תוצאות – חלק 1מיון תוצאות – חלק 2סיכום – חברת אבטחת סייברהגבלת מספר הרשומותסיכום – מפעל כלי רכב6אתגרי מבוא
חזרה – בחירות לפרלמנטחזרה – מעצר חשוד בידי המשטרהחזרה – כלי משקה בברחזרה – מהנדסים עמודות חדשותתרגלו בעצמכם: SQL אונליין