私は正常化されていない状況に追い込まれました。レポート、ドライバー、アラート、および alert_codes テーブルがあります。すべてに関係があります。ただし、ドライバー 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 句では 2 つの異なる列を使用できないことがわかります。解決策はありますか?