私は 2 つのテーブルを持っています。1 つは旅行の開始位置と終了位置を含み、もう 1 つはその旅行中の 1 分ごとの車両の緯度/経度位置を含みます。テーブルは tripID によって関連付けられています。
このようなもの:
trip_table:
TRIPID | DEP | ARR
------------------
1 | CLE | CHI
2 | CLE | ATL
3 | ATL | CLE
position_table:
TRIPID | TIME | LAT | LON
-----------------------------------------
2 | May-20-2012T00:23 | 35.4 | -84.2
2 | May-20-2012T00:24 | 35.5 | -84.1
3 | May-21-2012T11:14 | 42.0 | -112.4
2 つの条件で構成されるクエリがあります。 1. 旅行が特定の場所で出発/到着したすべての位置データを取得します。 2. 旅行が特定の緯度/経度を通過したすべての位置データを取得します。
SELECT p.* FROM position AS p
JOIN trip_table t ON (t.tripid = p.tripid)
WHERE (t.dep = 'CLE' OR t.arr = 'CLE)
OR (p.lat > 34 AND p.lat < 40 AND p.lon > -100 AND p.lon < -90)
私の質問は次のとおりです。このクエリを変更して、結果のどの行が最初の条件 (指定された場所に出発/到着した旅行) から来たのか、2 番目の条件 (旅行が指定された緯度/ロン)?
現在、私の唯一の考えは、2 つの個別のクエリを実行することですが、クエリの全体数を削減することが可能であれば、それを避けたいと考えています。
この種の問題に対する標準的な SQL ソリューションがあれば、それは素晴らしいことです。そうでない場合は、PostgreSQL 固有のソリューションも機能します。
編集:なぜ私がこれをやりたいのか疑問に思っている人のために-結果の位置は地図上にプロットされ、境界のある地域から来たのか、2 つの到着/出発場所の間から来たのかに基づいて色分けしたいと思います。