我有一個表,我試圖查詢自己,我不知道如何去做。Oracle範圍和子查詢
表名:時間表
- USER_ID
- STARTDATE
- 結束日期
- sequencyID
的情況是我有一個數量的行,其中USER_ID = 0這表示某人可以宣稱的公開時間表。如果計劃得到聲明,則會爲其分配特定的用戶標識。這裏是棘手的部分進來。我試圖挑選一個用戶,並顯示與他們已被接受或已安排的時間不重疊的時間表。
這裏是我迄今爲止
SELECT *
FROM schedule
WHERE user_id = 123456;
這讓我的時間全部範圍內的人已經接受
SELECT *
FROM schedule
WHERE user_id = 0;
這讓我可用的所有日程安排行。我不太確定如何組合它們,以便最終結果是一個計劃元素列表,其中user_id = 0,startdate/enddate不存在於已分配用戶的開始日期和結束日期之間。
我認爲這將是這樣的
SELECT *
FROM schedule
WHERE user_id = 0
AND (loop through schedule rows testing for
(startdate < loopstartdate and enddate < loopstartdate) ||
(startdate > loopenddate)
的地方就是我掙扎。有任何想法嗎?如果有人能夠至少指出我正確地使用什麼機制來開始解決這種令人敬畏的問題。
所以我做了相當數量的數據測試,並且這個工作非常完美!!!!! – Doug