2014-09-05 28 views
1

我使用问题之间的关系动态创建问卷。如何在sql server查询中使用字段值作为条件?

这意味着应该显示或隐藏一个问题取决于其他问题的答案。

我创建了两个表格,一个用于提问,一个用于关系船。

现在在关系表,我有价值观是这样的:

ParentQuesId   ChildQuesId   Operand   Answer 
    35     45    =    yes 
    35     46    =    no 
    37     52    >=    10 

35个问题有2个选择yes和no。现在,当用户选择是时,应该显示问题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) 

但我需要让这个第2条件[即@userans +操作数+答案]这是基于操作字段值动态

任何人都可以帮我做这个吗?

回答

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) 
    ); 
+0

感谢戈登您的回复,但操作数不固定。我需要使用操作数和答案作为条件。 – Mausami 2014-09-05 01:21:33

+0

@Mausami。 。 。只需展开'where'包含所有可能的操作数。 – 2014-09-05 01:35:04

+0

谢谢戈登。这对我很有帮助。非常感谢.. – Mausami 2014-09-05 02:53:01

相关问题