データベースに書き込んでいる特定のクエリについて質問がありSQL Server 2008
ます。これは(はるかに)大きなクエリの一部ですが、私がやろうとしていることを簡単に分離できるように、それを単純化していきます。
私はテーブルTableX
、2つの列を持っています:
IDX (int) identity
VarX (varchar(20))
2つの補助テーブルがTableY
ありTableZ
ます。どちらにも2つの列があります。
TableY
IDY (int) identity
VarY (varchar(20))
と
TableZ
IDZ (int) identity
VarZ (varchar(20))
私は4番目のテーブルに挿入を行っています。これをと呼びますTableA
。TableA
3つの列があります:
IDA (int) identity
IDY (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ステートメントである必要があります...完全なクエリを視覚化するのに多くの問題があります...どんな助けでもありがたいです。