【发布时间】:2011-03-23 17:55:10
【问题描述】:
我有一个名为 Student 的表,其中包含很多外键,用于过滤学生(表行)。
这个表的结构是这样的:
StudentId GenderId DegreeId NatioanlityId
1 2 2 3
....
由于学生可以说一种或多种语言,因此学生表链接到这样的语言表
StudentId LangaugeId
1 1
1 2
1 3
学生可以选择一门或多门考试科目:
StudentId ExamId
1 1
1 2
....
在我的 asp.net 页面中,我想使用 ajax 通过复选框过滤学生 例如,具有 1 级的女性和男性性别的学生,说语言 1,2 ......我使用用户定义的表过滤存储过程中的行,我必须使用很多这样的 IF 语句 if(EXISTS(SELECT GenderId FROM @GenderTable))
if(EXISTS(SELECT DegreeId FROM @DegreeTable))
if(....)
else
if(...)
如何避免所有 IF 语句?我有超过 5 个过滤器。这很无聊。有人有什么想法吗?
提前致谢。
【问题讨论】:
-
为什么你有一个“性别”的查找表?
-
您是通过查询数据库生成复选框选项,还是在页面上硬连线?此外,对于语言,您似乎希望能够检查一种以上的语言。如果选中了多种语言,这是否意味着您要选择会说两种语言的学生?
-
没错,乔尔。学生可以被一种或多种语言过滤。问题是可能没有性别检查:仅按语言过滤,如果检查性别,则检查学位,将存储过程中的过滤器与连接结合起来......你看到了吗?
-
@Joel :通过查询 DB。实际上,过滤器用于获取与我的过滤器匹配的学生数量。
-
让我考虑一下。在我几年前参与的一个项目中,我们遇到了类似的 SQL 过滤问题,但你的问题有点复杂。 (我们必须处理多个过滤器,在某些过滤器中可能没有检查任何项目。但我认为我们不能在给定的过滤器中检查多个项目。)
标签: c# jquery asp.net sql-server tsql