単純化されたレンタル システムには、次の 3 つの関係があります。
- 本: ID、タイトル、説明
- コピー: id、book_id
- 予約: id、copy_id、rent_from、rent_until
各本には多くのコピーが存在します。顧客が本をレンタルすると、利用可能なコピーが選択され、対応する予約レコードが作成されます。
今私の問題: 顧客が本を選択し、彼/彼女は借りたいと思っています。システムは、指定されたレンタル期間に利用できるコピーを確認する必要があります。
利用可能なコピーを照会する最もエレガントで最速の方法は何ですか?
基本的に、段階的に次のことを行います。
- 対応する本のすべてのコピーを選択します
- それらのコピーの指定された期間内のすべての予約を選択します
- 選択した予約に含まれていない本のコピーを確認します。すべてのコピーが含まれている場合、その本は指定された期間にレンタルできません
ステップ3で頭痛がします。SQLでこれを行う方法は? 1 つの洗練されたクエリで 3 つの手順すべてを実行できるでしょうか?