Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果在access+C中的何处_C#_Sql_Ms Access - Fatal编程技术网

C# 如果在access+C中的何处

C# 如果在access+C中的何处,c#,sql,ms-access,C#,Sql,Ms Access,如何在where中执行IFF,在这里执行过滤器,在我的情况下,我希望到达值为0的参数不会影响我的查询,只需忽略它们即可 可以在where语句中使用iif。但是语法一开始看起来并不直观。Where需要布尔子句,所以您应该做的是转换 IIF (@turno == 0, AND P.codTurno = @turno , ) 到 请注意,每次参数@turno的值为0时,我们都会将其更改为-1或任何您确定不在且不会在数据库中此列中的值 因此,最终您的SQL代码应该如下所示 SELE

如何在where中执行IFF,在这里执行过滤器,在我的情况下,我希望到达值为0的参数不会影响我的查询,只需忽略它们即可


可以在where语句中使用iif。但是语法一开始看起来并不直观。Where需要布尔子句,所以您应该做的是转换

IIF (@turno     == 0, AND P.codTurno = @turno       , )

请注意,每次参数@turno的值为0时,我们都会将其更改为-1或任何您确定不在且不会在数据库中此列中的值

因此,最终您的SQL代码应该如下所示

SELECT 
P.NombreCompleto
FROM (((((((Persona AS P 
LEFT JOIN MarcacionTemp AS MTemp ON P.codPersona = MTemp.codPersona) 
LEFT JOIN Horario AS Ho ON MTemp.codHorario = Ho.idHorario) 
LEFT JOIN TipoMarcacion AS TMar ON MTemp.codTipoMarcacion = TMar.idMarcacion) 
INNER JOIN Colegio AS C ON P.codColegio = C.codColegio) 
INNER JOIN Entidad AS E ON P.codEntidad = E.codEntidad) 
INNER JOIN Grado AS Gr ON P.codGrado = Gr.codGrado) 
INNER JOIN Paralelo AS Pa ON P.codParalelo = Pa.codParalelo) 
INNER JOIN Turno AS Tu ON P.codTurno = Tu.codTurno
WHERE P.codTipo = 4       
[and/or] IIF (@turno=0, -1, @turno) = P.codTurno
[and/or] IIF (@grado=0,-1, @grado) = P.codGrado 
[and/or] IIF (@paralelo=0, -1, @paralelo) = P.codParalelo

如果没有,请使用内置的逻辑运算符,例如。。。和@turno=0或P.codTurno=@turno…请阅读。@AlexK。你是天才,但我只需要4个人请写下你的解决方案,非常简单good@AndrewMorton这不是问题,这些值工作得很好,请阅读说明,谢谢
IIF (@turno= 0, -1, @turno) = P.codTurno
SELECT 
P.NombreCompleto
FROM (((((((Persona AS P 
LEFT JOIN MarcacionTemp AS MTemp ON P.codPersona = MTemp.codPersona) 
LEFT JOIN Horario AS Ho ON MTemp.codHorario = Ho.idHorario) 
LEFT JOIN TipoMarcacion AS TMar ON MTemp.codTipoMarcacion = TMar.idMarcacion) 
INNER JOIN Colegio AS C ON P.codColegio = C.codColegio) 
INNER JOIN Entidad AS E ON P.codEntidad = E.codEntidad) 
INNER JOIN Grado AS Gr ON P.codGrado = Gr.codGrado) 
INNER JOIN Paralelo AS Pa ON P.codParalelo = Pa.codParalelo) 
INNER JOIN Turno AS Tu ON P.codTurno = Tu.codTurno
WHERE P.codTipo = 4       
[and/or] IIF (@turno=0, -1, @turno) = P.codTurno
[and/or] IIF (@grado=0,-1, @grado) = P.codGrado 
[and/or] IIF (@paralelo=0, -1, @paralelo) = P.codParalelo