Sql 为什么我的查询不适用于特定参数?
我有三张桌子 系统用户 抱怨 映射 1用于注册网站用户。 2是为了避免投诉 我将在稍后讨论3 收到投诉后,会将其分配给系统用户,即投诉表中的AssignToUser_ID 投诉: 同情心 日期 分配者ID 现在,如果用户想要查看投诉,那么应该只显示分配给他而不是其他人的投诉,这是我已经解决的部分,但是 现在我将讨论映射表 映射: 映射ID 系统用户ID 分配者ID 此表用于存储指定的系统用户,即,如果投诉被分配给我,并且我决定将其分配给另一个用户,以便他也可以查看实际分配给我的投诉,则这是可能的。 现在这部分我已经解决了,但问题是,如果我以指定用户的身份登录,那么我可以查看分配给实际用户的投诉,但是如果我以原始用户的身份登录,那么我无法查看分配的投诉 我的尝试:Sql 为什么我的查询不适用于特定参数?,sql,sql-server,tsql,sql-server-2012,rdbms,Sql,Sql Server,Tsql,Sql Server 2012,Rdbms,我有三张桌子 系统用户 抱怨 映射 1用于注册网站用户。 2是为了避免投诉 我将在稍后讨论3 收到投诉后,会将其分配给系统用户,即投诉表中的AssignToUser_ID 投诉: 同情心 日期 分配者ID 现在,如果用户想要查看投诉,那么应该只显示分配给他而不是其他人的投诉,这是我已经解决的部分,但是 现在我将讨论映射表 映射: 映射ID 系统用户ID 分配者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
您使用@SystemUser\u ID作为SystemUser\u ID和AssignToUser\u ID。我认为它们是两个不同的概念,有各自的系统。 您的分配者标识号1可能与您的系统用户标识号1不同 根据分配的用户类型或系统,您需要创建两个不同的条目 一条路要走:
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
另一种方法是创建两个不同的存储过程。寻求调试帮助的问题此代码为什么不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者来说是没有用处的。我已经尽了最大的努力来描述这个问题,在发布之前,我已经花了很多时间,一个人不应该太强硬,也不是每个人都能完美地发布一个好的问题。对不起,先生,这不是作文比赛什么的。我发布了我认为应该发布的内容,这是SOF的作用。我了解这项工作,您可以查看此处,了解如何改进问题。示例数据和预期输出将非常有用。刚刚编辑,您也需要更改通话。对不起,有时候我脑子有问题