我現在的表是這樣的:MySQL的內部連接ON子句現場未找到
Lessons:
+-----------------------------------+
| ID | Name | StartDate | Repeats |
|----|-------|------------|---------|
| 1 | Maths | 2014-05-05 | 5 |
| 2 | Lunch | 2014-05-05 | 1 |
| 3 | Comp | 2014-05-05 | 7 |
+-----------------------------------+
LessonTimes:
+-------------------------------------+
| ID | LessonID | StartTime | EndTime |
|----|----------|-----------|---------|
| 1 | 1 | 10:00:00 | 5 |
| 2 | 2 | 12:25:00 | 1 |
| 3 | 3 | 14:00:00 | 7 |
+-------------------------------------+
Tally:
+----+
| ID |
|----|
| 1 |
| 2 |
| . |
| . |
+----+
我有一個具體的開始日期一定天數,即重複事件。目前的查詢我擁有的是:
SELECT E.ID
, E.Name
, E.StartDate
, E.Repeats
, A.ShowDate
, DATEDIFF(E.StartDate, A.ShowDate) diff
, T.StartTime
, DATE_ADD(A.ShowDate, INTERVAL T.StartTime HOUR_SECOND) ShowTime
FROM Planner_Lessons E
, (SELECT DATE_ADD('2014-05-05 00:00:00',INTERVAL ID DAY) ShowDate
FROM `Planner_Tally`
WHERE (DATE_ADD('2014-05-05 00:00:00',INTERVAL ID DAY)<= '2014-05-30 00:00:00')
ORDER
BY Id ASC
) A
LEFT
JOIN Planner_LessonTimes T
ON T.LessonID = E.ID
WHERE MOD(DATEDIFF(E.StartDate, A.ShowDate), E.Repeats) = 0
AND A.ShowDate >= E.StartDate
但我得到的錯誤是說,現場E.ID
不能在「ON」的條款中找到。
原來的問題,我發現查詢的是在這裏 - PHP/MySQL: Model repeating events in a database but query for date ranges
我想你左'加'與'A'表,所以你不能設置條件'T.LessonID = E.ID' – Sathish
Planner_lessons和A沒有on子句或內/外連接語法 – xQbert
不要混合隱式(逗號 - )和顯式連接語法。實際上,根本不要使用隱式連接語法。另外,我懷疑將'id'與DATEDIFF的結果進行比較會更有效率('2014-05-30 00:00:00','2014-05-05 00:00:00') – Strawberry