首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查每行表中有多少列包含值。

检查每行表中有多少列包含值。
EN

Stack Overflow用户
提问于 2013-10-01 15:21:28
回答 1查看 505关注 0票数 0

我在MSSQL数据库中有这两个表。

学生首选项表(此表在数据库中有编号为1-7的首选项列)

代码语言:javascript
运行
复制
 ------------------------------------------------------------------------------
    Student Name |   Preference 1|  Preference 2 | Preference 3  |Group ID
    -----------------------------------------------------------------------
    Student A    |   Student G   |   Student F   |  Student G    |
    Student B    |   Student H   |   Student K   |  Student L    |
    Student C    |   Student I   |   Student A
    Student D    |   Student H   |   Student K
    Student E
    Student F
    Student G
    Student H
    Student I
    Student J
    Student K
    Student L
    -----------------------------------------------------------------------------

组表

代码语言:javascript
运行
复制
 |Group ID |
     ---------
    1
    2
    3
    ----------

我正在根据学生输入的偏好(首选伙伴/队友)创建学生组。每组可以有5-8 students.Not,所有学生都会输入首选项.要创建一个组,我将检查输入4-7首选项的学生,并将它们添加到组中。例如,学生A输入了4个首选项。包括学生A,现在我有5名学生的最低人数要求小组。因此,我想插入“组表”并检索该数字,并在“组ID”列中插入每个学生。如果学生输入的偏好少于4个,我将不得不创建一个新的“组id”并分配给学生,但我也必须检查每个组的5-8名学生没有被违反。

有人能帮我指点一下吗。如何检查多于4个首选项列包含数据(名称)的行?如果存在4个以上的首选项,那么如何在Groups表(Group (auto-inc))中插入新的记录并将其检索回来以插入“学生偏好”表。在插入组id之前,我如何检查5-8个学生的状态没有被破坏?我试图找出如何以最简单的方式解决这些问题(使用c#或SQL)?我正在用C#编写应用程序。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-01 15:39:55

这是个很糟糕的桌子设计。如果有多张桌子,你可能会更好。一个用于学生/团体,另一个用于学生/偏好。所以:

代码语言:javascript
运行
复制
T_STUDENTS
StudentID
GroupID

T_STUDENT_PREFERENCES
StudentID
Preference

然后您可以简单地查询您的首选项表:

代码语言:javascript
运行
复制
select
studentid,
count(preference)
from
pref_table
group by
studentid
having count(preference) >4

因为你不能这样做,所以你必须用case语句做一些很糟糕的事情。

有点像

代码语言:javascript
运行
复制
select
student,
case when preference1 <>''  then 1 else 0 end as pref1 //or something to check for empty/null,
case when preference2 <>'' then 1 else 0 end as pref2
....

然后,将7列相加,并筛选出所需的首选项数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19120053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档