关于SQL语句问题,高手请进,急!!

dybyun 2002-04-13 11:54:27
select class.studentnum,student.studentname from class,student where class.sutdentnum=student.number

class表中存的是学生的编号,在查询时,到student表中取学习姓名,这样存是对的。
如果class.studentnum 的值是空的,就不会取出结果了。
在用sysbase数据库时,如果是空可省略,就可以写成
select class.studentnum,student.studentname from class,student where class.sutdentnum*=student.number
那么在DB2数据库中应该怎么写?
谢谢!!!
...全文
67 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dybyun 2002-04-15
Andrawu谢谢你,好用了,以后还要多指教。
忽然觉得分给的少了点儿,下次多给点儿分儿
回复
welcomegtm 2002-04-15
应该需要三个表
学生表();选课表();课程表();
原因如下:
学生选棵为m:n的关系,因此需要选课表进行连接!
回复
Andrawu 2002-04-15
SELECT a.afield1, a.afield2, a.afield3, b.field1, c.field2,d.field1 FROM table1 a LEFT JOIN table2 b ON (a.field1 = b.field2) LEFT JOIN table3 c ON (a.field2=c.field1 AND a.field3 = b.field4 ), table4 d WHERE a.filed1 = '000001'
full join 和right join 类似,
join是可以联接多个表的,on是两个联接表中两个比较条件,可以是多个用and联接。
试试吧。


回复
dybyun 2002-04-15
楼上的朋友先谢谢你,这样我试过了,好使,但只是两个表好使,如果from后面是多表怎么办呀???我就不会写了!!!
回复
Andrawu 2002-04-14
select c.studentnum,s.studentname from class c full join student s on c.studentnum=s.number
不管表student、class中编号哪个有空都将显示出来。
select c.studentnum,s.studentname from class c left join student s on c.studentnum=s.number
将保留class表的记录,如果student表中的记录编号为空
select c.studentnum,s.studentname from class c right join student s on c.studentnum=s.number
将保留student表的记录,如果class表中的记录编号为空

试试看。
回复
dybyun 2002-04-13
不是不可用,是这样写以后,class.studentnum为空的这条记录就不会查询出来了,我还想让它出来!!!!
回复
可乐加水 2002-04-13
select class.studentnum,sudent.studentname from class,student where
class.studentnum=student.number仍然可用,我试过了,db2 7.1
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告