注册 登录
编程论坛 SQL Server论坛

学查询语句遇到点困难

mp3aaa 发布于 2008-07-28 16:52, 1560 次点击
有两个表格 WW ,QQ  我想查询同时选修了课程号  q1 and q3 的学生记录
下面是我的语句

select qq.学号,课程号,成绩 from ww,qq
where  qq.学号=ww.学号 and 课程号='q1' and 课程号='q3' order by qq.学号


可是我些的这个语句什么也查找不出来。。。。

请问应该怎么改 才能查找出 所有同时 选修了q1 和 q3 的学生记录
9 回复
#2
mp3aaa2008-07-28 17:54
我想得到的是  比如说 tim 选修了语文 同时 又选修了数学 则Tim 满足条件
但是SAI 只选修了 语文 不满足条件

tim 满足条件 输出

姓名 课程号  成绩
tim   语文   99
tim   数学   99
#3
西风独自凉2008-07-28 18:06
講了一大堆。。。。懶得看
#4
kingnan19882008-07-28 21:19
这样肯定是错误的 因为我想你的ww、qq表中的那两个字段都市一样的吧,,,
要么 你把表结构那出来看下 就是有那些个属性
#5
provoke2008-07-28 22:39
where ... and 课程号='q1' and 课程号='q3'

这样是查询课程号同时为q1和q3的课程,显然在逻辑上是错误的。
应该这样:

where ... and (课程号='q1' or 课程号='q3')

或者

where ... and 课程号 in ('q1','q3')
#6
冷板凳2008-08-12 15:14
那样岂不是把选择课程“q1”“q3”的都选出来了吗?
#7
同生缘2008-08-14 17:24
楼上那个是选择吧,能达到同时选上q1 和 q3的效果吗?
其实在课程号前加上表名,以区分不同表里的课程号,就行了。
#8
xyz10002008-08-15 12:04
select qq.学号,课程号,成绩 from  ww, qq where qq.学号 in (select qq.学号 from qq where 课程号='q1' or 课程号='q3' group by qq.学号 having count(*)=2) and ( 课程号='q1' or 课程号='q3')


不知道效率怎么样,但应该能选出来
#9
xyz10002008-08-15 12:06
select qq.学号,课程号,成绩 from  ww, qq where qq.学号 in (select qq.学号 from qq,ww where 课程号='q1' or 课程号='q3' group by qq.学号 having count(*)=2) and ( 课程号='q1' or 课程号='q3')
1