Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 连接5个表的SQL语句_C#_Asp.net_Sql - Fatal编程技术网

C# 连接5个表的SQL语句

C# 连接5个表的SQL语句,c#,asp.net,sql,C#,Asp.net,Sql,好的,我想用一个相当复杂的语句填充一个gridview,我不知道如何得到它,我甚至不知道它是否可能。涉及五个表和一个视图,这些不是表中的所有字段,但为了让事情更清楚,我只放了必需的字段 学生表:- Student_ID Specialization_ID ID Department_Name 专门化表:- ID Specialization_Name Department_ID 职员表:- ID Staff_ID Department_ID 部门表:- Student_ID Speci

好的,我想用一个相当复杂的语句填充一个gridview,我不知道如何得到它,我甚至不知道它是否可能。涉及五个表和一个视图,这些不是表中的所有字段,但为了让事情更清楚,我只放了必需的字段

学生表:-

Student_ID
Specialization_ID
ID
Department_Name
专门化表:-

ID
Specialization_Name
Department_ID
职员表:-

ID
Staff_ID 
Department_ID
部门表:-

Student_ID
Specialization_ID
ID
Department_Name
调查表:-(
Username
为上传者)

用户视图:-(此处的
用户名
密码
取自学生表和教职员表)

以下是我创建视图的方式:-

CREATE View [Users] as
Select Student_ID as Username, Password,'STU' as UserType from Student
union
Select Staff_ID, Password, 'STF' as UserType from Staff

现在,考虑到当一名员工登录时,他的用户名存储在session
session[“username”]
,我想从数据库中提取的是所有由用户(仅学生)上传的调查,这些用户具有属于当前用户部门的专业知识。考虑到所有关系(外键)都已设置,我应该使用什么样的sql查询?或者至少是方法。

简言之:首先尝试找出表之间的连接(FK和PK-从一开始,看起来专业化、员工和部门表确实有关系)

然后提出有效的查询。尝试将其转换为视图,并根据记录数衡量性能


尽管这是一个如何进行的指导原则,但我确信这会有所帮助。

简言之:首先尝试找出表之间的联系(FK和PK-从一开始,看起来专业化、员工和部门表确实有关系)

然后提出有效的查询。尝试将其转换为视图,并根据记录数衡量性能


虽然这是一个如何继续的指南,但我确信这会有所帮助。

好的,所以我在一个小时的研磨后使用子查询解决了它……谢谢大家的帮助

    Select * From Survey where Username IN 
(Select Student_ID from Student where Specialization_ID IN 
(Select ID from Specialization where Department_ID = 
(Select Department_ID from Staff where Staff_ID =@Username)))

好的,所以我在一个小时的研磨后使用子查询解决了它…谢谢大家的帮助

    Select * From Survey where Username IN 
(Select Student_ID from Student where Specialization_ID IN 
(Select ID from Specialization where Department_ID = 
(Select Department_ID from Staff where Staff_ID =@Username)))

请问为什么用户和员工之间没有另一张桌子

它可能被称为UserStaffTable,它将两个id列作为复合键,另外两个列引用specialization和departmenttable?通过这种方式,你总是有一份属于某个职员的学生名单,你可以根据专业和/或部门筛选出他们

这将允许您执行联接而不是子查询


根据这一点,如果这有任何关系的话,子查询会更慢

我可以问一下为什么用户和员工之间没有另一张桌子吗

它可能被称为UserStaffTable,它将两个id列作为复合键,另外两个列引用specialization和departmenttable?通过这种方式,你总是有一份属于某个职员的学生名单,你可以根据专业和/或部门筛选出他们

这将允许您执行联接而不是子查询


根据这一点,如果这有任何关系的话,子查询会更慢

我找不到前4个表和后两个表之间的关系。你如何将用户名与学生联系起来?什么是“他的用户名存储在会话<代码>会话[“用户名”]中”?什么是<代码>会话[“用户名”]?@rbaryYoung Iam在会话中存储当前登录用户的登录ID,使用的会话功能是asp.net c#。@Steve我编辑了我的问题,向您展示了我是如何创建视图的。我找不到前4个表和后两个表之间的关系。您如何将用户名与学生联系起来?什么是“他的用户名存储在session
session[“username”]
mean?什么是
Session[“Username”]
?@rbaryyoung Iam在Session中存储当前登录用户的登录ID,使用的会话功能是asp.net c#。Steve我编辑了我的问题,向您展示了我是如何创建视图的。您应该查看
加入
,而不是
子查询
(如“ElYusubov”所建议的那样).
子查询
可能是您在此处可以采取的最差选项。您应该查看
加入
,而不是
子查询
(如“ElYusubov”所建议)。
子查询
可能是您在此处可以采取的最差选项。