0

さまざまな情報源から、さまざまな引用指標を使用して、学術雑誌のランキングの表をいくつか持っています。それらを1つのテーブルにまとめ、ジャーナルごとにデータを集約したいと思います。

たとえば、最初のテーブルには次の列があります。

ISSN1 ISSN2 Journal_Name_1 Impact_Factor

2番目のテーブルには列があります

ISSN3 ISSN4 ISSN5 Journal_Name_2 Citations

ジャーナル名はデータソースによって異なり、どのジャーナルにも0個以上のISSN番号が付いている場合があります。私がやりたいのは、列を持つ新しいテーブルを作成することです

ISSN1 ISSN2 ISSN3 ISSN4 ISSN5 Journal_name_1 Journal_Name_2 Impact_factor Citations

これには、条件が満たされている場合に、最初のテーブルの行を2番目のテーブルの行とマージすることによって表1または表2にリストされているすべてのジャーナルが含まれます。

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

その結果を作成するための最も効果的な方法は何ですか?

(現在、データはCSVファイルにあります。sqlite/ mysql / postgresql /その他のDBMSを使用できます)

4

1 に答える 1

1

再生するためのSQLフィドル。

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));
于 2012-11-23T23:32:18.957 に答える