【发布时间】:2015-06-11 17:49:36
【问题描述】:
我有一张桌子 1:
和表 2:
每个问题可以有多个选择(例如:questionId 1 有两个选择,choiceId 1 和 2)。
我有一个允许用户选择多个选项的表单,如下所示:
还有一个答案表:
现在我的问题是:我想根据选择形成一个 SQL 查询并显示所选答案的数量。(例如:我想计算性别为女性和教育程度为 1 年级的答案)。我该怎么做?
我尝试过这样的事情:
select * from answers where (questId =2 and choiceIndex='2.0000') and (questId =3 and choiceIndex='1.0000') and someId=72
这个查询没有给我正确的计数,因为相同的选择索引可以存在于不同的选择。
我怎样才能做到这一点?用户还可以从表单中选择许多选项,那么有什么方法可以动态生成我的 SQL 查询?
开斋节
感谢@Marc Gravell 的解决方案。它有很大帮助。现在,一旦我实现了这一点,我想在我的查询中包含算术运算符。 (例如:我想计算性别为女性 + 教育为 1 年级 - 教育为 3 年级的答案)。
有没有一种方法可以在我的查询中包含算术运算符(+、-、*、/、%、count、average)?
场景:我设计了一个表单,用户将在其中从数据库值生成公式。 (例如:用户选择choice1[female] +choice2[grade 1] *choice3[grade3] 生成的公式将保存在数据库中以供进一步使用)
我试过这样:
select ((select COUNT(*) from answers where (questId =2 and answer='1.0000') and someId=72) +
(select COUNT(*) from answers where (questId =3 and answer='1.0000') and someId=72))
在此查询中,我尝试对两个选择语句执行添加操作。我可以用同样的方式做 *,/,percentage 等吗?
有没有更好的方法来做到这一点?
【问题讨论】:
-
重新编辑;是的,数据库可以执行算术运算,但它需要数字输入 - 在您的“像这样”示例中,不清楚您的意思是确切
-
在该查询中,我尝试添加 2 个选择查询的计数。同样,我想执行其他算术运算。有没有更好的方法来做到这一点?
-
是的,它有效。只是想知道是否还有其他更好的方法可以做到这一点。
-
不,看起来差不多;你也可以使用:select count(1) from (query 1) union [all] (query 2) union [all] (query 3),但是你所拥有的很好
标签: c# asp.net sql-server-2008