Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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
Php 如何在sql server查询中使用字段值作为条件?_Php_Sql_Sql Server_Sqlcommand - Fatal编程技术网

Php 如何在sql server查询中使用字段值作为条件?

Php 如何在sql server查询中使用字段值作为条件?,php,sql,sql-server,sqlcommand,Php,Sql,Sql Server,Sqlcommand,我用问题之间的关系动态地创建问卷 这意味着一个问题的显示或隐藏取决于另一个问题的答案 我已经创建了两个表,一个用于问题,一个用于关系 现在在关系表中,我有如下值: ParentQuesId ChildQuesId Operand Answer 35 45 = yes 35 46

我用问题之间的关系动态地创建问卷

这意味着一个问题的显示或隐藏取决于另一个问题的答案

我已经创建了两个表,一个用于问题,一个用于关系

现在在关系表中,我有如下值:

ParentQuesId         ChildQuesId         Operand         Answer
    35                   45                =              yes
    35                   46                =              no   
    37                   52               >=              10
问题35有两个选项是和否。现在,当用户选择是时,问题45应显示,46应隐藏;当用户选择否时,问题46应显示,45应隐藏

当用户选择答案大于或等于10时,问题37也是如此。应显示问题52

现在,我正在基于ParentQuesId和用户的答案进行sql查询

但我不知道如何根据操作数、答案和用户答案的值来生成条件

到目前为止,我所做的尝试如下:

 declare @sql nvarchar(255)
 declare @parent int = 35
 declare @userans nvarchar(100) = 'yes'
 set @sql = 'select * from QuesRelations where ParentQuesId = '+ cast(@parent as nvarchar(50)) +' and '''+ cast(@userans as nvarchar(50)) +''' = Answer';
 exec(@sql)
但我需要使第二个条件[即@userans+操作数+应答]动态,它基于操作数字段值


有人能帮我做这件事吗?

我建议你像常规SQL一样做:

select *
from QuesRelations
where ParentQuesId = @parent and
      ((operand = '=' and @answer = answer) or
       (operand = '>=' and @answer >= answer)
      );
当然,您可以扩展
where
来处理其他操作数,例如:

select *
from QuesRelations
where ParentQuesId = @parent and
      ((operand = '=' and @answer = answer) or
       (operand = '>=' and @answer >= answer)
       (operand = '>' and @answer > answer)
       (operand = '<=' and @answer <= answer)
       (operand = '<' and @answer < answer)
      );
选择*
来自提问
其中ParentQuesId=@parent和
((操作数='='和@answer=answer)或
(操作数='>='和@answer>=answer)
(操作数='>'和@answer>answer)

(operant='谢谢gordon的回复,但operant不是固定的。我需要使用operant和answer作为条件。@Mausami…只需展开
中的
,就可以包含所有可能的操作数。