我有 3 表格
1 用于注册网站用户。 2 用于保存投诉
我稍后会讨论 3 。
收到投诉后,会将其分配给系统用户,即投诉表中的AssignToUser_ID。
投诉:
现在,如果用户想要查看投诉,那么只会显示那些分配给他而不是其他投诉的投诉,这是我已解决的部分,但是......
现在我将讨论MAPPING表。
映射:
此表用于存储指定的系统用户,即如果投诉被分配给我并且我决定将其分配给另一个用户,那么他也可以查看实际分配给我的投诉然后就可以了。 现在这部分我已经解决了,但问题是如果我以指定用户身份登录,那么我可以查看分配给实际用户的投诉,但如果我以原始用户身份登录,那么我无法查看分配的投诉。
我的尝试:
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
答案 0 :(得分:0)
您使用@SystemUser_ID作为systemuser_id AND作为AssignToUser_ID。我认为它们是两种不同的概念,具有自己的增量系统。 您的AssignToUser_ID n°1可能与您的systemuser_id n°1不同。
您需要根据您的用户类型(指定的OR系统)制作两个不同的条目。
一种方法:
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
另一种方法是制作两个不同的存储过程。