SELF JOIN USING 2 CONDITIONS

beky1

New member
SELF JOIN USING 2 CONDITIONS

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

מצרפת את השאלה ואת הפתרון:
http://sqlzoo.net/wiki/Self_join - שאלה 5.

קוד הפתרון:
הפתרון: SELECT a.company, a.num, a.stop, b.stop
FROM route a JOIN route b ON
(a.company=b.company and a.num=b.num)
WHERE a.stop=53 and b.stop=149

תוצאות הקוד:
company num stop stop
LRT 4 53 149
LRT 45 53 149

במידה ואני מסירה את השדה המשותף השני אני מקבלת את התוצאה הבאה:
company num stop stop
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 4 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 10 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
LRT 27 53 149
 

גרי רשף

New member
אני מנסה להבין למה הכוונה - מקווה שאינני טועה

הטבלה היא טבלת כבישים, תחנות וחברות.
נניח - כביש החוף מתל-אביב לחיפה,
יש בו תחנות כמו גלילות, הרצליה, נתניה, אולגה וכו',
ויש חברות תחבורה שעוצרות בהן: אגד, מוניות שירות, מטרופוליטן.
&nbsp
השאילתה נועדה להציג חברות שעוצרות בכביש החוף בהרצליה (53) ונתניה (149).
יש ליצור התאמה לפי כביש וחברה: הרי אי אפשר לעלות על מונית שירות בתחנה בה אגד אינו עוצר ולרדת מהאוטובוס בתחנה בה רק אגד עוצר.. צריך להתחיל לגמור עם אותה חברה.
בנוסף יתכן שיש תחנה 149 גם בדרך לרושלים (נניח - מוצא), ולא נרצה לגלות שעלינו על אגד בהרצליה אבל הוא לא עוצר בנתניה (אלא שיש קו אחר של אגד שעוצר במוצא ואינו רלוונטי לנו). המקרה השני יקרה לנו אם נוריד את התנאי השני כפי שעשית: קיבלת צירופים של תחנות 53 ו-149 שאותה חברה עוצרת בהם, אבל בכבישים שונים (ולכן לא ניתן לנסוע בינהם).
 
למעלה