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

[求助]求出读者的借书的册书

lzf0112 发布于 2006-12-10 15:49, 1721 次点击

有两个表:一个为读者表,另一个为借阅表;这两和表之间有外码约束关系,即借阅表中的读者编号要与读者表中的读者编号要一致。
现在要统计读者在2004年到2006年间的借书册数,并把数值导入到读者表中,使得读者表中读者的编号与他所借阅书的册数一一对应。
麻烦大家看一下怎么解决啊,我写了好久还是没有写出来啊。。。。。

16 回复
#2
bygg2006-12-10 18:20
看看你是怎么写的?
#3
棉花糖ONE2006-12-10 18:36
select duzhe.*,count=(select count(1) from jieyue where id=d.id) from  duzhe d
#4
lzf01122006-12-10 19:00
本来读者里面的册数为0,现在要把他修改为事实的借阅册数啊。。。
update 读者
set 借书册数=(select count(读者编号)
from 借阅
where 借阅日期 between '2004-01-01' and '2006-12-31'
group by 读者编号
)
where 读者.编号 in
(select 借阅.读者编号
from 读者,借阅
where 读者.编号=借阅.读者编号
group by 读者编号
)

我这样写不行啊,他把读者中册数都改为了相同的数啊,跟实际不一样啊
#5
棉花糖ONE2006-12-10 19:11
select 读者.*,借书册数=(select count(1) from 借阅 where 读者编号
=d.编号 where 借阅日期 between '2004-01-01' and '2006-12-31'
) from 读者 d
你试试这样行不行
#6
lzf01122006-12-10 19:39

还是不行啊,这样只能增加一列册数而且册数里面的值都一样啊。。。

#7
棉花糖ONE2006-12-10 19:52

create table r(id int primary key)
insert into r select 1
union select 2

create table jie(id int foreign key references r(id),name varchar(20))
insert into jie select 1,'jinyu'
union select 1,'zhang'
union select 2,'kk'
insert into jie select 1,'jinyu'
union select 1,'zhang'
union select 2,'kk'

select r.*,c=(select count(1) from jie where id=r.id ) from r
我这样写怎么查出的不是一个结果啊,我是先要你查询一下这语句是否能得到你修改后的那个结果

#8
lzf01122006-12-10 19:56
不行啊。。。。。。原题目为:
实现在读者表中增加“借书册数’字段,统计借书者在2004年~2006年间所借书的册数,并将结果送入读者表中的借书册数字段的操作。
#9
棉花糖ONE2006-12-10 19:58
select d.*,借书册数=(select count(1) from 借阅 where 读者编号
=d.编号 where 借阅日期 between '2004-01-01' and '2006-12-31'
) from 读者 d
你把这个先运行了看看结果再说
#10
lzf01122006-12-10 20:05
呵呵,可以咯,
谢谢你啊。只是最后一个where应该改为and吧,
谢谢你!!!!!!!!!
#11
棉花糖ONE2006-12-10 20:05
select d.*,借书册数=(select count(1) from 借阅 where 读者编号
=d.编号 and 借阅日期 between '2004-01-01' and '2006-12-31'
) from 读者 d
#12
lzf01122006-12-10 20:06
想问你一个问题啊,count(1)表示什么意思哦?
#13
棉花糖ONE2006-12-10 20:09
对不起刚才没注意,写错了,count(1)和count(*) 其实是等价,不过听说可以提高速度,说实话我也不知道能不能提高速度,我没有大数据量
#14
lzf01122006-12-10 20:11

可否直接说明白点。。。。。在下愚昧还是不懂啊。。。
#15
棉花糖ONE2006-12-10 20:13
count(1)和count(*)都是求总数的啊
#16
lzf01122006-12-10 20:15
哦,谢谢指点。。。
#17
棉花糖ONE2006-12-10 20:17
1