私は3つのテーブルを持っています。挿入データ用のtable1とデータ選択用のtable2、table3。
table1:
int id,
varchar name,
varchar gender,
varchar category,
table2:
int id,
varchar gender,
table3:
int id,
varchar category,
これらの表によると、私は以下のようにストアドプロシージャを使用しています。
Create procedure ABC
(
@id varchar(10),
@name varchar(11),
@gender varchar(10),
@category varchar(10)
)
As
begin
Insert into table1(id, name, gender, category) select @id, @name, g.id, c.id from gender g, category c where g.gender=@gender and c.category=@category
end
現在、性別またはカテゴリが空の場合にこれを使用すると、データは挿入されません。どこが間違っているのか、selectクエリを使用してデータを挿入するのに最適なクエリを教えてください。問題を解決するのを手伝ってください。ありがとう
and
where句を使用していgender = @gender
ます。これは、レコードを選択している場合にのみ意味します。
Create procedure ABC
(
@id int, ----- change this to int since id is int type in your table
@name varchar(11),
@gender varchar(10)='',
@category varchar(10)=''
)
As
begin
Insert into table1(id, name, gender, category)
select @id, @name, g.id, c.id from gender g, category c
where (g.gender=@gender or isnull(@gender,'')='') and (c.category=@category or isnull(@category,'')='')
end
このアプローチを使用することもできますが。ただし、性別のIDとカテゴリ列をテーブルに挿入する必要があるため、渡すnull
かblank
値を指定すると、レコードに入力されると予想されるIDが何になりますか。
最初に尊敬するテーブルで性別とカテゴリの値を確認し、レコードが見つからない場合はそれをテーブルに挿入してから、対応するIDをファイナルテーブルに保存することをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加