ユーザーから提供されたいくつかの制約に基づいて、2つのテーブルを結合したいと思います。これを言葉で表現する方法がわからないので、例を使用して私がやろうとしていることを説明します。
私は2つのテーブルを持っています:
l_id | l_fileid c_id | c_fileid
--------------------- ---------------------
1 | X1 1 | X2
2 | X1 3 | X2
3 | X1 2 | Y2
4 | X1
5 | Y1
2 | Y1
ユーザーは次のようなマッピングを提供します。X1 -> X2, Y1 -> Y2
この場合、結果は次のようになります。
l_id | l_fileid | c_fileid
-------------------------------------
1 | X1 | X2
2 | X1 | NULL
3 | X1 | X2
4 | X1 | NULL
5 | Y1 | NULL
2 | Y1 | Y2
私はこれを行うことができるクエリをなんとか書き留めましたが、これが最善の方法ではないことを望んでいます。これが私がこれまでに思いついたものです:
SELECT * FROM (
(SELECT * FROM L WHERE l_fileid='X1')
LEFT JOIN
(SELECT * FROM C WHERE c_fileid='X2')
ON l_id=c_id
)
UNION
SELECT * FROM (
(SELECT * FROM L WHERE l_fileid='Y1')
LEFT JOIN
(SELECT * FROM C WHERE c_fileid='Y2')
ON l_id=c_id
)