2014-01-29 2 views
0

postgres 배열 필드의 값이 다른 테이블의 값과 일치하는지 확인하려고합니다. 나는 내용의 값 (필드)의 모든 콘텐츠의 모든 IDS (과 일치하는지 확인하려면배열의 값이 Postgres 테이블에 있는지 알아 보려면

id | name | desc 
1 | Phone | .... 
2 | Keys | .... 

내용 : 자동차

id | name | contents 
1 | Ford | {1, 3, 5} 

및 테이블 :

나는 테이블이 표). 이것은 Postgres 데이터베이스입니다.

+0

나쁜 방법은 : 당신은 정수 [] 정수 사이의 배열을 허용 나던 관계 테이블 자동차 <> ---> 내용 – venergiac

+0

이 필요합니다. –

답변

0

* (배열 포함 된 별)는 intarray 확장의 요점 opclasses를 사용하여 색인입니다 :

SELECT ... 
FROM cars 
INNER JOIN contents ON (ARRAY[contents.id] @< cars.contents); 

또는 사용 = ANY :

SELECT ... 
FROM cars 
INNER JOIN contents ON (contents.id = ANY (cars.contents)); 

... 그러나 이것은 아마도 mismodelling한다; 이 m : n 관계를 모델링하기 위해 두 테이블 사이에 조인 테이블을 가지고 있어야하며 배열로 밀어 넣지 않아야합니다.

참조 :

0

(자동차에서 (내용을) unnest 선택)에서 ID가 당신은 <@ 연산자를 사용할 수 있습니다 내용에서 선택

관련 문제