PHP/MySQL検索フォームを作成しようとしています。ユーザーが検索したいときは、3つの入力フィールドを入力する必要があります。FromDate、ToDateおよびSucategoryID。SQL Left Join - 右テーブルの複数の行
テーブルが2つありますアイテムとアイテムブロックデート アイテムの情報があり、IDで識別されています。 テーブルItemBlockDatesには、アイテムが検索結果に表示されない期間に関する情報があります。内容:ItemID、FromDate、および日付フィールド。また、1つの明細に対して複数のブロック日付を定義する可能性があります。
ここで、FromDateとTo Dateの入力が同じItemIDを持つItemsBlockDatesのいずれの行とも一致しないすべてのアイテムを選択したいとします。
私は、クエリを書きましたが、問題があります:私はこのクエリを実行すると、ブロックの日付が設定されていないところ
SELECT *
FROM Items
LEFT JOIN ItemBlockDates ON Items.ID = ItemBlockDates.ItemID
WHERE Items.SubcategoryID = :SubcategoryID
AND ItemBlockDates.FromDate NOT BETWEEN CAST(:FromDate AS DATETIME) AND CAST(:ToDate AS DATETIME)
それはアイテムを表示しない、また、それは、複数のブロックの日付がある項目が表示されますセット。