postgres で次の 2 つのテーブルを結合したい:
table1 (
i1 character varying
, i2 character varying
, i3 character varying
)
table2 (
i4 character varying
, startorend character varying
, begin integer
, end character integer
)
table1 には次の値が含まれます。
p1 p2 p3
p4 p10 p6
p7 p8 p9
p99 p199 p299
table2 には次の値が含まれます。
p4 begin 1 12
p4 end 13 14
p7 begin 19 20
p1 end 21 22
次に、以下のルールに従うように、2 つのテーブルを結合します。
1. table1.i1=table2.i4 の場合 1a. table2 に対応する begin と end を含む行が 2 つある場合、 次に、table2.begin と table2.end を選択します table2.i4 の begin 列と end 列からそれぞれ。 1b. table2 に対応する begin または end を含む行が 1 つしかない場合、 次に、デフォルト値を end(9999) および begin(0) と想定して書き込みます。
上記のルールを適用すると、以下の表が得られます。
p4 1 14
p1 0(default) 22 (as it just contains end column in table 2, therefore 0(begin) as default is inserted)
p7 19 9999(default) (as it just contains begin column in table2, therefore 9999(end) as default is inserted)
テーブルを効率的に結合できますが、万が一デフォルト値を挿入することはできますか?