【发布时间】:2018-01-21 13:45:11
【问题描述】:
我正在尝试制作 PHP / MySQL 搜索表单。当用户想要搜索时,他需要填写 3 个输入字段:FromDate、ToDate 和 SucategoryID。
有 2 个表格:Items 和 ItemsBlockDates 在 Table Items 中,有关于该项目的信息,并由 ID 标识。 在 Table ItemBlockDates 中,有关于 Item 不会显示在搜索结果中的时间段的信息。它包含:ItemID、FromDate 和 Date 字段。此外,还可以为一个项目定义多个锁定日期。
现在,我想选择 FromDate 和 To Date 输入与 ItemsBlockDates 中具有相同 ItemID 的任何行不匹配的所有项目。
我写了一个查询,但是有一个问题:
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)
当我运行此查询时,它不显示未设置阻止日期的项目,它还显示设置了多个阻止日期的项目。
【问题讨论】: