申し訳ありませんが、問題のヘルプを見つけるためにどのキーワードを使用すればよいかわかりません。
独自のフィルター機能を持つ他のソフトウェアで使用する SQL のビューを構築しています。ビューをいくつかの目的で使用したいので、ある種の非正統的なアイデアがあります。
もともと、2 つのテーブルを LEFT OUTER JOIN したかったのです。しかし: SQL が一致を見つけたとしても、Right テーブルからのデータを持たない余分なレコードが必要です。次に例を示します。
t1:
pk data
1 a
2 b
3 c
t2:
pk fk data
1 a line1
2 a line2
3 c line3
4 c line4
5 c line5
ここに私が現在得ているものがあります: クエリ:
select t1.data, t2.data from t1 left outer join t2 on t1.data = t2.fk
戻る:
t1.data t2.data
a line1
a line2
b <NULL>
c line3
c line4
c line5
私が実際に返したいもの:
t1.data t2.data
a <NULL>
a line1
a line2
b <NULL>
c <NULL>
c line3
c line4
c line5
この結果が必要な理由は、他のソフトウェアでビューを使用して、t2.data = NULL のレコードのみをフィルタリングできるためです。
誰も私がこれを行う方法を知っていますか? ソフトウェアに手動で参加したくありません。そのパフォーマンスは、エンドユーザーにとって耐えられないほど非効率的だからです。
あなたの助けに感謝します。
PS右のテーブルを、一致しないトップ(1)選択を完全に外部結合するサブセレクトに置き換えることを考えましたが、それを適切に行う方法がわかりません:-/