MySQLで質問です。

ホテルの予約システムを作っており、各部屋のテーブルとプランとチェックイン日毎のユーザーの予約のテーブルの三つを持ってますが、プランの一覧で予約が埋まっているプランを非表示にさせるSQLがどうも浮かびません。
ご助言を頂けませんでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/12/20 02:22:44
  • 終了:2011/12/20 14:26:29

ベストアンサー

id:satoxu No.1

satoxu回答回数94ベストアンサー獲得回数142011/12/20 07:03:16

ポイント100pt

プランの上限数が登録されていれば、COUNT で予約数を数えて、上限に達したものを除外して表示すればよいかと思います。

プランの申し込み時に

  • プランのテーブルに予約数を入れておく
  • 登録時に予約数を数えて、上限に達したプランにフラグをたてておく

などしておけば、それほど速度低下を起こさずに組めると思います。

SELECT * FROM plan where receive = 'yes';
(プランのテーブルに受付可能かどうかのフィールドを入れた場合)

id:makocan

上記においてなのですが、日付の概念が無い気がします。日付が無ければ、仰る処理で問題ないのですが、いかほどでしょうか?

2011/12/20 12:21:43
id:satoxu

説明不足ですいません。

AND 句を足して、該当する日付を検索する必要もあります。

2011/12/20 12:27:41

その他の回答(1件)

id:satoxu No.1

satoxu回答回数94ベストアンサー獲得回数142011/12/20 07:03:16ここでベストアンサー

ポイント100pt

プランの上限数が登録されていれば、COUNT で予約数を数えて、上限に達したものを除外して表示すればよいかと思います。

プランの申し込み時に

  • プランのテーブルに予約数を入れておく
  • 登録時に予約数を数えて、上限に達したプランにフラグをたてておく

などしておけば、それほど速度低下を起こさずに組めると思います。

SELECT * FROM plan where receive = 'yes';
(プランのテーブルに受付可能かどうかのフィールドを入れた場合)

id:makocan

上記においてなのですが、日付の概念が無い気がします。日付が無ければ、仰る処理で問題ないのですが、いかほどでしょうか?

2011/12/20 12:21:43
id:satoxu

説明不足ですいません。

AND 句を足して、該当する日付を検索する必要もあります。

2011/12/20 12:27:41
id:kodairabase No.2

kodairabase回答回数661ベストアンサー獲得回数802011/12/20 11:31:23

ポイント100pt

テーブルの構造が次のようになっているものとします。

各部屋のテーブル rooms

フィールド名内容
id部屋ID
name部屋名

プランのテーブル plans

フィールド名内容
idプランID
room_id部屋ID
nameプラン名

ユーザー予約テーブル reserves

フィールド名内容
id予約ID
room_id部屋ID
plan_idプランID
yyyymmdd予約日時
user予約者氏名またはID

SQLは次のようになります。

SELECT * FROM reserves FULL OUTER JOIN plans ON reserves.plan_id=plan_id WHERE yyyymmdd is NULL;
id:makocan

丁寧にご説明いただきありがとうございます。
ただ、これは、私の説明不足なのですが、plansテーブルに予約できる最大人数を入れておりまして。。。そこがネックになっております。

2011/12/20 12:41:46

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません