У меня есть 2 таблицы, одна из которых содержит начальное и конечное местоположения поездки, а другая содержит координаты широты и долготы транспортного средства каждую минуту во время этой поездки. Таблицы связаны по 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 отдельных запроса, но я бы хотел избежать этого, если можно просто сократить общее количество запросов.
Если бы для этого типа проблемы существовало стандартное SQL-решение, это было бы здорово; если нет, то есть ли решение для PostgreSQL, которое тоже сработает.
РЕДАКТИРОВАТЬ: Если кому-то интересно, ПОЧЕМУ я хочу это сделать - результирующие позиции нанесены на карту, и я хотел бы покрасить их в зависимости от того, пришли ли они из ограниченного региона или из двух мест прибытия/отправления.