2017-03-31 9 views
0

私はクエリが特定のパラメータに対して機能しないのはなぜですか?

  1. SystemUsers
  2. 苦情
  3. マッピング

テーブルを持っているが、ウェブサイトのユーザーを登録するために使用されます。 は私が後でについて説明します省苦情

ためです。

苦情が届くと、その苦情はシステムユーザ、すなわち苦情処理テーブルのAssignToUser_IDに割り当てられます。

苦情:

  1. CompaintID
  2. AssignToUser_IDユーザーが彼他のないに割り当てられていただけ、それらの苦情が示されるべき苦情を見たい場合は今

それは私が解決した部分ですが...。

ここで私はM APPINGテーブル。

マッピング:

  1. MappingID
  2. SystemUser_ID
  3. AssignToUser_ID

訴えたが、私に割り当てられ、私はそれを割り当てることを決定された場合には、このテーブルはすなわちノミネートsystemusersを格納するために使用されます他のユーザーも、実際に私に割り当てられた苦情を見ることができるので、それは可能です。 ここで私はどうにかして解決しましたが、問題は、指定したユーザーとしてログインすると、実際のユーザーに割り当てられた苦情を表示できますが、元のユーザーとしてログインしても割り当てられた苦情は表示できません。

私の挑戦:あなたはsystemuser_id ASとAssignToUser_IDとして@SystemUser_ID使用

CREATE Procedure [dbo].[usp_getAllMarkedComplaints] 
(


    @SystemUser_ID int 

) 
AS 
Begin 

if exists (Select * from mapping where systemuser_id = @SystemUser_ID) 
begin 
     Select * From dbo.Complaints Comp 
     Where (Comp.AssignToUser_ID IN (select assigntouser_id from mapping where systemuser_id = @SystemUser_ID))  AND 
     Comp.ComplaintStatus_ID <3 
    end 
    else 
    begin 

     Select * From dbo.Complaints Comp 
     Where (Comp.AssignToUser_ID = @SystemUser_ID) AND 
     Comp.ComplaintStatus_ID <3 


    end 
End 
+1

デバッグヘルプ(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は他の読者には役に立たない – TheGameiswar

+0

私は問題を説明するために最善を尽くしました。投稿する前に多くの時間を費やしました.1人はあまり強硬にならないようにしてください。良い質問。申し訳ありませんが、それはエッセイコンテストではありません。私は私が何をすべきかを投稿しました。これはSOFのためのものです – Covert

+1

私は努力を理解しています。あなたはここを見て、あなたがquestion.httpsを改善する方法を見ることができます://spaghettidba.com/2015/04/24/how-to -post-at-sql-a-public-forum/ – TheGameiswar

答えて

0

。私は彼ら自身の増分システムを持つ2つの異なる概念であると思います。 AssignToUser_ID n°1はおそらくあなたのsystemuser_id n°1と同じではありません。

ユーザーの種類(割り当てられたORシステム)に応じて、2つの異なるエントリを作成する必要があります。どこへ行く

一つの方法:

CREATE Procedure [dbo].[usp_getAllMarkedComplaints] 
(
    @user_ID int, 
    @user_type char(3) 
) 
AS 
Begin 

    if @user_type = 'SYS' 
    begin 
     Select * From dbo.Complaints Comp 
     Where Comp.AssignToUser_ID IN (select assigntouser_id 
             from mapping 
             where systemuser_id = @user_ID) 
     AND Comp.ComplaintStatus_ID <3 
    end 

    if @user_type = 'ASG' 
    begin 

     Select * From dbo.Complaints Comp 
     Where Comp.AssignToUser_ID = @user_ID 
      AND Comp.ComplaintStatus_ID <3 

    end 
End 

行くための別の方法は、二つの異なるストアドプロシージャを作成することです。

+0

作業していません – Covert

+0

ちょうど編集した後、あなたもあなたの呼び出しを変更する必要があります。申し訳ありませんが、時々私の脳を入れます – Lostblue

関連する問題