2013-11-08 1 views
2

수 PostgreSQL을에 구문 지원 정렬을 사용하여 관계형 대수 나누기 연산자를 구현하는 어떤 하나의 가이드? 편집 : postgresql의 소스 코드를 처리합니다. PostgreSQL에 부서 기능을 추가해야합니다.PostgreSQL을에 관계 대수 분할 연산자를 구현

+1

더 많은 정보. 테스트 케이스, 시도했거나 시도하지 않은 코드 예제, 사용 사례를 설명합니다. 현재 : 우리는 꽤 많은 질문과 답변으로'관계 구분 '을위한 전용 태그를 가지고 있습니다. 몇 가지 조언을 해 줄 수 있습니다. 나는 당신의 꼬리표에 그것을 추가했다. –

답변

1

가입 회원님이 구문 지원 정렬과 의미하고 있지만 관계 나누기 연산자는 단순한 복잡한 것 같아 무엇인지 : 당신이 제공 할 것으로 기대된다

select a_.id 
from (select a.id, array_agg(a.b_id) as b_ids from a group by a.id) as a_ 
join (select array_agg(b.id) as b_ids from b) as b_ on b_.b_ids <@ a_.b_ids 

http://en.wikipedia.org/wiki/Relational_algebra#Division_.28.C3.B7.29


denis=# create table a (id int, b_id int); 
CREATE TABLE 
denis=# create table b (id int); 
CREATE TABLE 
denis=# insert into a values (1,1), (1,2), (1,3), (2,1), (2,3), (3,1), (3,2); 
INSERT 0 7 
denis=# insert into b values (1), (2); 

denis=# select a_.id from (select a.id, array_agg(a.b_id) as b_ids from a group by a.id) as a_ join (select array_agg(b.id) as b_ids from b) as b_ on b_.b_ids <@ a_.b_ids; 
id 
---- 
    1 
    3 
(2 rows) 
+0

답장을 보내 주셔서 감사합니다. 그러나 이것은 제가 원하지 않습니다. 부서 기능을 추가하기 위해 postgresql의 소스 코드를 편집하고 싶습니다. – ashokarya2

+0

@ ashokarya2 : 카탈로그에서 일부 메타 정보를 쿼리하면 위의 코드를 plpgSQL 또는 C 함수에서 감쌀 수 있습니다. Postgres 코드 기반에서 깔끔하게 감싸는 해결책을 위해 올바른 장소는 pg 해커 메일 링리스트가 될 것입니다. –