在SQL Server中使用多个参数进行搜索

时间:2014-02-11 15:43:45

标签: c# sql sql-server

这个问题与c#和SQL Server都有关。

我想知道如何进行自定义搜索。

我有三张桌子

客户

CusId, Name, Telephone

员工

EmpId, Name, Job

预约

AppId, Date, EmpId, CusId

我的C#表单有三个复选框。我想根据检查的值找到数据。

例如:当选择了客户,员工,应用程序复选框时,我希望根据所有这三个值查找数据。

当只选择两个或一个时,我想根据这些选择进行搜索。这里将共有6种组合。

当我将这些值作为参数传递给存储过程时,如何编写查询以获得正确的结果。

我是否必须编写6个存储过程才能获得结果?

有没有方法可以轻松完成这项工作?

请帮我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用如下的查询(将在存储过程中建议):

-- Parameters to a SQL sproc
DECLARE @CustID INT, @EmpID INT, @AppointmentID INT

-- Set Parameters here for testing

SELECT *
FROM Appointment as A
INNER JOIN Employee as E
  ON E.EmpID = A.EmpId
INNER JOIN Customer as C
  ON C.CusID = A.CusID
WHERE (@CustID IS NULL OR C.CUsID = @CustID)
AND (@EmpID IS NULL OR E.EmpID = @EmpID)
AND (@AppointmentID IS NULL OR A.AppID = @AppointmentID)

然后,您需要相应地传入参数,如果选择了ID,则为null;如果不对某个项目进行过滤,则为null。