外部キーを介して接続された 2 つのテーブルがあります。テーブルAでは、時間列のデータがテーブルBの開始列以上であり、時間列のデータがテーブルbの終了列以下であるすべての行を取得しようとしています. これには内部結合が機能する可能性があると考えていましたが、結果は期待したものではありません。いくつかのデータを返していますが、繰り返しています。
ここに私が持っているものがあります:
SELECT * FROM columnA
INNER JOIN columnB
ON columnA.time >= columnB.start
OR columnA.time <= columnB.stop
私はこれを間違って見ていますか?内部結合は、このデータを収集する正しい方法ですか?
アップデート:
実際、tableA の外部キーは tableB の主キーに接続しています。とにかく私はこれをしました:
SELECT * FROM tableA
INNER JOIN tableB
ON tableA.time >= tableB.start
AND tableA.time <= tableB.stop
あなたがしたことをしなかった理由は、データが数年前からデータベースにあり、最近、外部キーを含む列を追加したからです。したがって、その列にはまだデータがありません。そのため、情報で更新する列を知ることができるようにクエリを実行しています。データは返されましたが、要件を満たしていない他のデータも返されました。