需要设计查询或MS SQL程序
假设我有两张桌子 学生表:需要设计查询或MS SQL程序,sql,sql-server-2005,Sql,Sql Server 2005,假设我有两张桌子 学生表: studentID, lname, fname 测试表: testid, studentid, testname, testdate 学生可以参加测试A和测试B 现在,我想设计一个查询或过程,如果学生同时参加了测试a,则可以显示来自student表和test_表的数据以及条件 只有考试信息需要与学生信息一起显示,否则应显示所有参加的考试信息,或者如果没有考试,则不显示任何考试信息。我的理解是,如果学生同时参加了两项考试,则您可以转到“显示学生信息”和“考试信息”,
studentID, lname, fname
测试表:
testid, studentid, testname, testdate
学生可以参加测试A和测试B
现在,我想设计一个查询或过程,如果学生同时参加了测试a,则可以显示来自student表和test_表的数据以及条件
只有考试信息需要与学生信息一起显示,否则应显示所有参加的考试信息,或者如果没有考试,则不显示任何考试信息。我的理解是,如果学生同时参加了两项考试,则您可以转到“显示学生信息”和“考试信息”,否则将使用学生信息进行考试。 如果我的理解正确,请尝试此查询
select st.*,tt.*
from student_table st
inner join test_table tt
on st.sid = tt.sid
and tt.sid in (select sid
from test_table
where testname ='testA'
intersect
select sid
from test_tablewhere testname ='testB')
and testname='testA'
union all
select st.*,tt.*
from student_table st
inner join test_table tt
on st.sid = tt.sid
and tt.sid not in (select sid
from test_table
where testname ='testA'
intersect
select sid
from test_table
where testname ='testB') ;
我建议你在考试和学生之间建立一种适当的多对多关系。如果你不知道怎么做的话,我听说过这本书的好东西,《为凡人设计数据库》。