データベースに書き込んでいる特定のクエリについて質問がありSQL Server 2008ます。これは(はるかに)大きなクエリの一部ですが、私がやろうとしていることを簡単に分離できるように、それを単純化していきます。
私はテーブルTableX、2つの列を持っています:
IDX (int) identityVarX (varchar(20))
2つの補助テーブルがTableYありTableZます。どちらにも2つの列があります。
TableY
IDY (int) identityVarY (varchar(20))と
TableZIDZ (int) identityVarZ (varchar(20))
私は4番目のテーブルに挿入を行っています。これをと呼びますTableA。TableA3つの列があります:
IDA (int) identityIDY (int)IDZ (int)
この表のIDYおよびIDZフィールドは、表Yおよび表ZのID列への外部キーです。
複雑に聞こえますが、接続は非常に簡単です。ここが楽しいところです。
したがって、のデータは次のTableXようになります。
IDX | VarX
--------------
1 | ABC
2 | ABC-LMN
のデータTableY:
IDY | VarY
----------------
1 |ABC
2 | HIJ
のデータTableZ:
IDZ | VarZ
----------------
1 | LMN
2 | OPQ
基本的に、VarX(2番目の列)は、単一のvarchar文字列、またはスペースなしでハイフンで接続された2つの文字列のいずれかになります。ハイフンのない単一の文字列の場合、常に表Yで一致します。一致はでオンVarYにTableY = VarXなりTableXます。関連付けられたID()を取得し、IDYそれをの挿入で使用しTableAます。
行1の例では、への挿入は次のようにTableAなります。(null, 1, null)
行2の場合、ハイフンで区切られた2つの文字列があります。したがって、への挿入TableAは最終的にはになります(null, 1, 1)。
だから私の質問はこれです...このタイプのロジックを処理するために、対応する結合を使用して挿入を定式化するにはどうすればよいですか?私はDBAではないので、caseステートメントである必要があります...完全なクエリを視覚化するのに多くの問題があります...どんな助けでもありがたいです。