2012-11-23 1 views
0

다른 출처 및 인용 기준으로 여러 학술 저널 순위 표가 있습니다. 저널로 데이터를 집계하여 단일 테이블로 결합하려고합니다.여러 필드의 완전 외부 조인

예를 들어, 첫 번째 테이블 컬럼 가지고

ISSN1 ISSN2 Journal_Name_1 Impact_Factor 

두 번째 테이블 갖는 열

ISSN3 ISSN4 ISSN5 Journal_Name_2 Citations 

저널 이름은 데이터 소스의 사이에서 변화하고있는 저널 0 이상의 ISSN 번호를 가질 수있다 . 내가 뭘하고 싶은 두 번째 테이블에서 하나를 사용하여 첫 번째 테이블에서 행을 병합하여 표 1, 표 2에 나열된 모든 저널을 포함 열

ISSN1 ISSN2 ISSN3 ISSN4 ISSN5 Journal_name_1 Journal_Name_2 Impact_factor Citations 

으로 새로운 테이블을 생성하는 경우 조건

(Journal_Name_1 = Journal_Name_2) OR (at least one of ISSN1 or ISSN2 is equal to at least one of ISSN3, ISSN4, ISSN5) 

결과를 만드는 가장 효과적인 방법은 무엇입니까?

재생을 위해

답변

1

SQL Fiddle (데이터는 순간에 CSV 파일에, 나는 sqlite가/mysql을/PostgreSQL을/다른 DBMS를 사용할 수 있습니다).

select t1.*, t2.* 
from t1 
left join t2 on (journal_name1 = journal_name2) 
       or (issn1 in (issn3, issn4, issn5)) 
       or (issn2 in (issn3, issn4, issn5)) 
union all 
select t1.*, t2.* 
from t1 
right join t2 on (journal_name1 = journal_name2) 
       or (issn1 in (issn3, issn4, issn5)) 
       or (issn2 in (issn3, issn4, issn5));