人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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


●質問者: makocan
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● satoxu
●100ポイント ベストアンサー

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

プランの申し込み時に

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

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


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

satoxuさんのコメント
説明不足ですいません。 AND 句を足して、該当する日付を検索する必要もあります。

2 ● kodairabase
●100ポイント

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

各部屋のテーブル 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;

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

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ