2017-02-21 13 views
0

オープンチケットを持っている場合、チームの各メンバーに警告するストアドプロシージャを作成しているチケットデータベースがあります。ルーピングでT-SQLヘルプが必要

私はその日のチケットを見つけるための選択クエリを持っています。チケットをユーザー名でグループ化し、各個人に電子メールを送信する必要があります。 (たとえば、私のキューに3つのチケットが開いている場合は、テーブルを作成して、3つの電子メールの代わりに3行を送信したいと考えています)。

私が調べるべき機能/チームの各メンバーをループするために使用します。私はループを探していたが、それがどのように役立つのか分からなかった。

これまでの考えでは、テーブル変数を作成して必要なデータを入力していました。ループ、

Select blah blah WHERE user = @user 

TSQLで

- 私は、各ユーザをループにどのようにこだわっている@user

に電子メールを送信したHTMLテーブルを構築します!どんな助けもありがたいです

+0

ほとんどのループは、通常、 'cursor'または' while'ループによって行われます。 2つの方法のドキュメントを見てください。 https://msdn.microsoft.com/en-us/library/ms180169.aspx、https://msdn.microsoft.com/en-us//library/ms178642.aspx – tarheel

+0

@SeanLangeはい、ありました。カーソルを使って、その日のために開いているチケットをすべて選択し、対応する人に電子メールを送ることができます。しかし、キューに複数のチケットを持っていれば、複数のチケットではなく1つの電子メールを送信するように、譲受人に基づいてチケットをグループ化することはできますか?私たちがカーソルでそれを行えるのなら私に知らせてください。私はそれについてさらに調査します。ありがとう! – Ramya

+0

あなたはそれを簡単に十分に行うことができます。あなたは3つのオープンチケットを持っているUserXに1つを送信したいと思います。内容には開いているチケットの詳細がすべて表示されますか?カーソルを使用して繰り返し実行すると、その人物の詳細を取得するためのクエリが実行されていますか?これはここからかなりまっすぐに見えます。どの部分に問題がありますか? –

答えて

2
declare @user as table (username varchar(10) , email varchar (20)) 
declare @ticket as table (username varchar(10) , ticketnumber varchar (20)) 
insert into @user values('A','a.com') 
insert into @user values('b','b.com') 

insert into @ticket values('A','t1') 
insert into @ticket values('A','t2') 
insert into @ticket values('b','t3') 

declare @ticketNumber as varchar(100) 
declare @userName as varchar(100) 
declare @user_cursor cursor 
declare @inner_cursor cursor 
declare @fetch_user_cursor int 
declare @fetch_inner_cursor int 

declare user_cursor cursor static local for 
SELECT 
     username 
    FROM @user 

    /*loop through top level cursor*/ 
    open user_cursor 
    fetch next from user_cursor into @userName 
    select @fetch_user_cursor = @@FETCH_STATUS 

    while @fetch_user_cursor = 0 
    begin 
    print @userName 

    /*loop through second level cursor*/ 
    set @inner_cursor = cursor static local for 
    select ticketnumber from @ticket where username = @userName 


    open @inner_cursor 
    fetch next from @inner_cursor into @ticketNumber 
    set @fetch_inner_cursor = @@FETCH_STATUS 
    while @fetch_inner_cursor = 0 
    begin 

     print @ticketNumber 

     fetch next from @inner_cursor into @ticketNumber 
     set @fetch_inner_cursor = @@FETCH_STATUS 
    end 
    close @inner_cursor 
    deallocate @inner_cursor 

    fetch next from user_cursor into @userName 
    set @fetch_user_cursor = @@FETCH_STATUS 


    end 
+0

あなたは電子メールで必要なhtml構造を作成することができますプリントステートメントのInseted。あなたの質問に必要な最小限の回答を投稿しました –

+0

あなたの解決策を試してみましょう。あなたの迅速な助けをありがとう! – Ramya

+0

@ Ramyaあなたはあなたの問題を解決し、私の答えを受け入れることができれば幸いです。 –