我被迫进入一个非正常化的情况。我有一个报告、驱动程序、警报和警报代码表。都有关系。但是,当使用驱动程序 ID 填充的 driver_id 字段创建报告时,所有后续报告也应与驱动程序相关联(即使不会填充这些报告的 driver_id 列),直到创建其警报其警报代码的报告有一个名称字段等于“内部围栏”。理想情况下,填充每个报告的 driver_id 字段会很好,但这不是我所处的情况。
因此,我尝试构建最有效的查询,但我被困在查询中,该查询在指定日期和给定月份内警报代码具有“内部围栏”字符串的报告之间获取报告。
这是我想出的,但给出了“运算符不存在:布尔 <= 字符变化”错误:
SELECT reports.* FROM reports
INNER JOIN alerts ON alerts.report_id = reports.id
INNER JOIN alert_codes ON alert_codes.id = alerts.code
WHERE (reports.unit_id = 3000 AND extract(MONTH FROM reports.time) = 3
AND extract(YEAR FROM reports.time) = 2013)
BETWEEN reports.time = '2013-03-20 15:21:05.379941'
AND alert_codes.name = 'Inside fence'
ORDER BY reports.time asc
有些东西告诉我,我不能在 BETWEEN 子句中使用两个不同的列。有什么解决办法吗?