2017-02-17 9 views
0

는 BUS_STOPS 테이블 경로 열에 쉼표로 구분 된 여러 값을 저장 : I는 학교의 거리 내에 BUS_ROUTES를 선택하고있어단일 필드에서 여러 값을 검색하는 방법 (GTFS에서 버스 정류장)? 덴버 대한 GTFS 데이터에

28, 19, 44, 10, 32 

.

그러나 해당 경로의 해당 정류장을 선택한다는 것은 위에서 설명한 버스 정류장 (예 : 버스 44를 사용하는 버스 정류장)을 찾으려는 것을 의미합니다.이 방법은 잘 모릅니다.

의견은 아래의 날과 같을 것이다 값 1 개 경로를 선택 알아낼 도움 :

select * from BUS_STOPS where ROUTES like '% 44,%'; 

을 ... 나열된 값 중 하나 (44)를 포함하는 레코드를 반환한다.

그렇다면 정적 값 44를 BUS_ROUTES 테이블의 ROUTES 필드 값으로 바꾸려면 어떻게해야합니까?

BUS_ROUTES 테이블은 다음과 같습니다

enter image description here

... 그리고 BUS_STOPS 테이블은 다음과 같습니다

enter image description here

내가 GTFS 데이터를 쿼리하는 PostgreSQL을 사용하고 있습니다 .

select * 
from BUS_STOPS 
where '44' = any(string_to_array(routes,',') 

이것도 조인 상태로 사용될 수있다 :

+0

선택 ... BUS_STOPS에서 ROUTES는 '% 44, %'와 (과) 같다; –

+0

오! 버스 노선의 ROUTE 필드와 일치 시키려면 어떻게해야합니까? 내가 뭐라는지 알 겠어? – DPSSpatial

+0

확인. 여기서 당신은 지금까지 해 온 것을 채우기로되어 있습니다. 이 qry 결과로 질문을 업데이트하십시오 : 'select * from BUS_STOPS'ROUTES '% 44, %'; ' –

답변

2

배열하여 문자열로 변환 한 후, 어레이 비교를 사용

select * 
from BUS_STOPS s 
    join bus_routes r on string_to_array(s.routes,',') @> string_to_array(r.routes,',') 

@>가있다 "를 포함"연산자 및 왼쪽 배열 (bus_stops.routes)에 오른쪽 배열 (bus_routes.routes)의 모든 요소가 들어 있는지 테스트합니다. 또 다른 옵션은 겹침 연산자를 사용하는 것이다 && - 정확히 무엇이 원하는지 내게 명확하지 않다.

+0

그 두 번째 진술은 내가 필요로하는 것이었다 ... 많은 감사 !!! – DPSSpatial