私は自分自身に対して照会しようとしているテーブルを持っています。Oracleの範囲とサブクエリ
テーブル名:スケジュール
- USER_ID
- STARTDATE
- ENDDATE
- sequencyID
状況は、私は= 0 USER_IDこれは表す行数を有しています誰かが主張できるオープンなスケジュール。スケジュールが要求されると、特定のユーザーIDが割り当てられます。ここでは、難しい部分が入っています。私は、ユーザーを選び、すでに受け入れられているかスケジュールされているものと重複しないスケジュール時間を表示しようとしています。ここで
は時代のすべての範囲は、人はすでに
SELECT *
FROM schedule
WHERE user_id = 0;
を受け入れた。これは私に可能なすべてのスケジュールの行を取得し、私を取得することを、私がこれまで持っているもの
SELECT *
FROM schedule
WHERE user_id = 123456;
です。私は、最終結果が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