使用dynamic where子句进行多对多关系查询

时间:2013-05-13 08:04:31

标签: sql sql-server-2008 c#-4.0 join where-clause

我的表是:

Table Emp:-
EmpId, EmpName

Table EmpDeptTrans:-
EmpDeptID, EmpID, DeptID

table Dept:-
DeptID, DeptName

业务逻辑是一个员工可以在多个部门工作,一个部门可以有多个员工,所以基本上是多对多关系。

我需要帮助来形成SQL查询,我可以在这里设置条件:

(dept='Engineering' and dept='Account' ) And (dept ='Library' or dept ='HR')

我的情况是动态的,可以根据要求改变......

2 个答案:

答案 0 :(得分:0)

因为我能理解这个问题。是你已经在xml数据中写了条件。表达式可能类似于

(dept ='Engineering'和dept ='Account')和(dept ='Library'或dept ='HR')

所以你需要做的就是。

创建一个计划查询,显示所有员工和部门的关系。 现在根据需要添加复杂的过滤条件。如下所示

declare @complex nvarchar(1000);
set @complex = "(dept='Engineering' and dept='Account' ) And (dept ='Library' or dept
 ='HR')"

execsql query+' '+ @complex;

答案 1 :(得分:0)

抱歉,需要更多输入才能获得最佳答案。

您可以将IN用于多个部门,例如..

select .... where emptrans.deptid in('101','102')