我正在用问题之间的关系动态创建调查问卷。
这意味着应该显示或隐藏一个问题取决于另一个问题的答案。
我创建了两个表格用于问题,一个表格用于关系船舶。
现在在关系表中我有这样的值:
ParentQuesId ChildQuesId Operand Answer
35 45 = yes
35 46 = no
37 52 >= 10
问题35有2个选项是和否。现在当用户选择是时,则应显示问题45,并且应隐藏46,当用户选择否时,应显示问题46并隐藏45。
当用户选择答案大于或等于10问题52时,和问题37相同。
现在我根据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 + Operand + Answer]动态,它基于操作数字段值
有人可以帮我吗?
答案 0 :(得分:0)
我建议您像常规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)
);