2016-11-03 9 views
-1

次のクエリを使用して、yellowpagesディレクトリの種類の2つのテーブル(リスト&カテゴリ)を一致させるために使用されるJunctionTableに挿入します。WHILE LOOPを使用して接合テーブルに挿入する

任意の指定されたリスティングは、1つ以上のカテゴリに属する​​ことができます。

次のクエリは、3つのレコードをジャンクションテーブルに1つの問題を挿入して挿入しています。私は3つのフィールド(ID、Junc_LID、Junc_CatID)私の2つの他のテーブルのID列を表すLIDは、リストIDとカテゴリーIDであるCatIDされている。

クエリを実行すると、CatIDフィールドに1,2,43,34のレコードが3つ追加され、それぞれ異なるcatIDで4回挿入されます。

ユーザが自分のウェブフォームから10のカテゴリを選択した場合。クエリは、ユーザーが選択する各カテゴリのJunctionTable 1に10行を挿入して10回ループする必要があります。カンマ区切りのすべてのカテゴリの文字列ではなく、挿入物ごとに1つのCatIDを入力します。

enter image description here

DECLARE @cnt INT = 0; 

WHILE @cnt < 3 
BEGIN 
INSERT INTO BND_ListingJunction_testing (Junc_LID,Junc_CatID) 
Values ('[PulledLID]','[CatID]') 
SET @cnt = @cnt + 1; 
END; 

------------------------------------- -UPDATE

ここでは、自分のトークンに対して変更されたクエリです。それは動作しますが、ジャンクションテーブルにいくつか追加の挿入を追加して、どこから来ているのかわかりません。

DECLARE @CatIDStr VARCHAR(100) = '[CatID]',@CatID VARCHAR(100) = '' 

WHILE LEN(@CatIDStr) > 0 
BEGIN 

    IF CHARINDEX(',',@CatIDStr) = 0 
    BEGIN 
     SET @CatID = @CatIDStr 
     SET @CatIDStr = '' 
    END 
    ELSE 
    BEGIN 
    SELECT @CatID = SUBSTRING(@CatIDStr,0,CHARINDEX(',',@CatIDStr))           
    SELECT @CatIDStr=SUBSTRING(@CatIDStr,CHARINDEX(',',@CatIDStr)+1,LEN(@CatIDStr)) 
    END 

    INSERT INTO BND_ListingJunction_testing (Junc_LID,Junc_CatID) 
    Values ('[ScopedLID]',@CatID) 

END 

enter image description here

行1-7回だけ実行同じ挿入からすべてです。

+0

あなたの質問は十分に明らかではない試してみてください。 –

+0

太字のテキストを追加して、自分の意図を明確にしました。 – UserSN

+0

@AlexPサンプルデータを表示してください。 – NEER

答えて

3

この

DECLARE @CatIDStr VARCHAR(100) = '1,2,43,34',@CatID VARCHAR(100) = '' 
    DECLARE @PulledLID INT = 1 
WHILE LEN(@CatIDStr) > 0 
BEGIN 

    IF CHARINDEX(',',@CatIDStr) = 0 
    BEGIN 
     SET @CatID = @CatIDStr 
     SET @CatIDStr = '' 
    END 
    ELSE 
    BEGIN 
    SELECT @CatID = SUBSTRING(@CatIDStr,0,CHARINDEX(',',@CatIDStr))           
    SELECT @CatIDStr=SUBSTRING(@CatIDStr,CHARINDEX(',',@CatIDStr)+1,LEN(@CatIDStr)) 
    END 

    INSERT INTO BND_ListingJunction_testing (Junc_LID,Junc_CatID) 
    Values (@PulledLID,@CatID) 

END 
+0

ありがとうございます。私はそれを試してみましょう。 – UserSN

+0

この例は正常ですが、何らかの理由で正しい値に加えて([PulledLID]、1&[PulledLID]、2&[PulledLID]、43&[PulledLID]、34)選ばれたフォームを修正し、[PulledLID]のトークン値を[ScopedLID]に変更し、DECLAREの[1,2,4,3,34]を[CatID]に変更して、どこから4つの値を追加するのかわかりません? – UserSN

+0

あなたが変更したものと期待される結果が何であるかを明確に教えてください。 – Mansoor

関連する問題