- PR -

SQLで空き時間を調べたい

1
投稿者投稿内容
jin
ベテラン
会議室デビュー日: 2004/03/11
投稿数: 96
投稿日時: 2008-05-07 20:36
現在,面談予約のデータベースを作っているのですが,オラクルSQLで,表1のようなテーブルから,ある日の15分間隔で空き時間を調べて次のように出力したいのですが,具体的なsqlがわかるかたいらっしゃいましたら教えていただけたらと思います.

(テーブル構造)
create table test(
予約番号 number(4),
予約者 varchar2(20),
開始時間 date,
終了時間 date,
constraint PK_TEST primary key(予約番号)
);

(次のようにデータが入っているとします.)

insert into test values(0001,'太郎さん',to_date('2008/05/12 10:15','yyyy-mm-dd hh24:mi'),to_date(2008/05/12 11:15','yyyy-mm-dd hh24:mi'));
insert into test values(0002,'次郎さん',to_date('2008/05/12 11:15','yyyy-mm-dd hh24:mi'),to_date(2008/05/12 12:15','yyyy-mm-dd hh24:mi'));・・・
・・・

testテーブル
----------------------------------------------
予約者   開始時間     終了時間
----------|------------------|----------------
太郎さん  2008/05/12 10:15 2008/05/12 11:15
・・・・・

出力結果 空き時間表(空き=0,予定あり=1)
※testテーブルを参照して,15分先があいているかどうかを調べて,次のようにしたいのですが,具体的なやり方がわからないのでご教授いただけたら幸いです.
------|---------
時間帯|空き状況|
----------------
9:00 | 0   |
---------------
9:15 | 0   |
---------------
9:30 | 0   |
---------------
9:45 | 0   |
---------------
10:00 | 0   |
---------------
10:15 | 1   |
---------------
10:30 | 1   |
--------------
10:45 | 1   |
---------------
11:00 | 1   |
---------------
11:15 | 0   |
---------------

[ メッセージ編集済み 編集者: jin 編集日時 2008-05-07 21:07 ]
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2008-05-07 21:28
コンバンハ

基本的にSQLでは、無いデータは表示できないので、カレンダーテーブルと時間テーブル、を別途作成する必要があると思います。

15分間隔のカレンダーを作成してもいいですが、無駄なデータが多くなるので分けたほうがいいかと思います。
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2008-05-07 21:34
9時から11時15分の間なら、10回SQl発行すれば、にたような結果は得られますが?
もちろん未記入さんの指摘通り無いデータは表示できませんが、SQLの条件を動的にアプリ側で作成して
取得結果を加工すれば望みの結果になります。細かいSQLは頑張ってください。
入門書レベルの問題です。

jin
ベテラン
会議室デビュー日: 2004/03/11
投稿数: 96
投稿日時: 2008-05-08 00:35
お返事ありがとうございます.
勉強のために,よく調べていろいろ試してみます.
1

スキルアップ/キャリアアップ(JOB@IT)