「一気に最後まで読んだ」本、教えて下さい!

SQL文の結合について。

現在会議室を予約するようなシステムを練習で作っているのですが、
SQL文を書くのが久しぶりでうまくいかず、困っています。

会議室の予約情報を記録しているschedule_t、時間を管理しているtime_tを結合させてどの時間が予約されているかを取り出したいと考えています。


■schedule_T
sid | stime | etime
 1 | 2 | 4
2 | 5 | 6

■time_t
time_id | time
1 | 8:00
2 | 9:00
3 |10:00
4 | 11:00(以下略)

schedule_tのsidは予約番号のようなもので主キーとして登録しています。
stimeは開始時間、etimeは終了時間で、stimeが2、etimeが4ならば8:00~11:00という感じです。

これをSQL文で仮にsid=1の予約時間を取り出したい場合、2,4ではなく8:00、11:00といった風に取り出したいのですが、どのようにSQL文を書けばよいのでしょうか?

二回に分けるのではなく一回のselect文で取り出したいと考えています。
どなたか教えていただけませんか?

VisualStudio2005でaccessにつないでやってます。

A 回答 (2件)

それぞれの開始時間と、終了時間を個別に


結合します。
SELECT A.sid,
A.stime,B.time, ★開始時間のペア
A.etime,C.time  ★終了時間のペア
FROM
(schedule_t A INNER JOIN time_t B
ON A.stime=B.time_id)
INNER JOIN time_t C ON
A.etime=C.time_id

これは一般的なSQLなので、DBシステムに
よってはASというキーワードが必要であったり、
結合句が異なる場合があります。こういう質問
ではDBシステム、バージョンを記載するのが
丁寧というものです。
    • good
    • 0
この回答へのお礼

なるほどー!
個別に結合させる。勉強になります。
DBシステムがちょっとわからなかったのでACCESSにつなげてると書いてみたんですがやっぱわかりませんよね^^;
すいませんでした。

しかし回答のおかげで無事うまくいくことができました。
ありがとうございました。

お礼日時:2010/09/16 15:32

VisualStudio2005については不明ですが


Access2002上では下記のSQLで求められました。あんまりぱっとしないけど。。

SELECT schedule_T.sid, schedule_T.stime,
(select time from time_t where time_id=schedule_T.stime) AS stimeA,
schedule_T.etime,
(select time from time_t where time_id=schedule_T.etime) AS etimeA
FROM schedule_T
WHERE schedule_T.sid=1
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
SQL文っていろんな書き方があって難しいです><
参考にさせていただきます。ありがとうございました!

お礼日時:2010/09/16 15:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す