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…只需展开中的,就可以包含所有可能的操作数。