עבור לתוכן

שאלה ב-SQL

Featured Replies

פורסם

יש לי שאלה קטנה:

SELECT E1.LastName,O1.OrderDate,E2.LastName

FROM Employees AS E1 INNER JOIN Orders AS O1 INNER JOIN Employees AS E2 INNER JOIN Orders AS O2

ON E2.EmployeeID=O2.EmployeeID

ON E2.EmployeeID>O1.EmployeeID

ON E1.EmployeeID=O1.EmployeeID

WHERE O1.OrderDate=O2.OrderDate

מה שלא מובן לי זה החלק של ה-ON

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

מה שאני לא מבין זה למה דווקר בינהם....למה דווקא בין E2 ל-O1 יש לי גדול מ..ובאחרים יש לי שוה...

השאלה של התרגיל הזה הלכה ככה:

1. הצג את כל העובדים (זוגות) אשר טיפלו בהזמנה שבוצעה באותו תאריך

פורסם

השאילתה שלך גם לא נעימה לקריאה וגם לא נכונה.

אתה צריך בין כל join של שני טבלאות on, אין שום הגיון בלשים > בין IDים, זה פשוט לא נכון, שים !=.

אין סיבה לרשום AS, אין סיבה לרשום inner.

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


select E1.lastname,O1.OrderDate,E2.lastname
from Employees e1 join orders O1 on (E1.EmployeeID=O1.EmployeeID)
join Employees E2 on (E1.EmployeeID != E2.EmployeeID)
join Orders O2 on (E2.EmployeeID = O2.EmployeeID)
where O1.OrderDate=O2.OrderDate

בגלל שאני לא יודע באיזה שרת SQL אתה משתמש אני לא יכול לדעת איך לעשות את ההמרה בין תאריך ושעה לתאריך, כנראה משהו כזה:

cast (O1.orderdate as date)

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים