+日期條件我都在一個數據庫中的兩個表:活動和日期,與他們之間的一個一對多的關係(1事件可以沿着許多日期)。加入SQL查詢
我想查詢數據庫,以獲得未來和過去的事件是這樣的:
- 查詢得到未來事件應與日期> = CURDATE返回的每一個事件()和事件沒有指定的日期。 ...
- 查詢得到往事應該只返回事件與分配至少一個日期應該是反過來,比CURDATE()年長...
我正在查詢數據庫使用一個簡單的連接,獲得適當的結果fot過去的事件(限制在不返回沒有日期的事件)。然而,對未來事件的查詢要稍微複雜一些,因爲沒有日期的事件也必須返回。我願意接受任何建議。
我嘗試至今:
過去事件(OK工作):
SELECT dates.*, events.*,
FROM events
JOIN dates on (events.eventID = dates.eventID AND dates.date < CURDATE())
GROUP BY events.eventID
ORDER BY events.eventID ASC
爲未來事件: ???
SELECT dates.*, events.*,
FROM events
LEFT JOIN dates on (events.eventID = dates.eventID AND dates.date >= CURDATE())
GROUP BY events.eventID
ORDER BY events.eventID ASC
(我知道我試着用LEFT JOIN是無效的,因爲它也返回過去的事情,凡是不注日期的信息(每場清零))。
在此先感謝。
如果你只需要對未來事件的明確你可以移動'dates.date> = CURDATE()'爲having子句 –
不,我需要未來的+非日期事件。 – andcl
在這種情況下,您需要在連接之後應用過濾器,以便將anddate.date> = curdate()移動到where子句並且add或dates.date爲空。 'where(dates.date> = curdate()OR dates.date爲null)'不經常我看到這個需求,但仍然 – xQbert