问一道sql2005查询语句的题

先建有一下表
CREATE TABLE 图书表
(
书号 char(20) primary key,
书名 char(50) NULL,
作者 char(30) NULL,
出版社 char(30) NULL,
单价 float NULL,
);

CREATE TABLE 读者表
(
读者号 char(10) primary key,
姓名 char(8) NOT NULL,
性别 char(2) NOT NULL,
办公电话 char(8) NULL,
部门 char(30) NULL
);

CREATE TABLE 借阅表
(
读者号 char(10),
书号 char(20),
借出日期 char(8) NOT NULL,
归还日期 char(8) NULL,
PRIMARY KEY(读者号,书号),
FOREIGN KEY(读者号)REFERENCES 读者表(读者号),
FOREIGN KEY(书号)REFERENCES 图书表(书号)
);
求:查询至少借阅过1本机械工业出版社出版的图书的读者的读者号、姓名、书名及借阅本数,并按借阅本书多少降序排列
不修改表不能做吗?二楼那种方法我试过,根本不能统计出借阅本数

不行,除非 借阅本数 字段添加到上面两个表的某一个中.......

否则, 就下面的:

把先应该插条记录吧 alter table 借阅表
add 借阅本数 int

Transact-SQL语句:

select d.读者号,姓名,书名,借阅本数
from 图书表 as t,读者表 as d,借阅表 as j
where t.书号=j.书号 and j.读者号=d.读者号 and 出版社='机械工业出版社'
order by 借阅本数 desc
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-24
select 读者号 = A.读者号,
姓名 = B.姓名,
书名 = C.书名,
借阅次数 = count(A.书号)
from 借阅表 A,
读者表 B,
图书表 C
where A.读者号 = B.读者号
and A.书号 = C.书号
and C.出版社 = '机械工业出版社'
group by A.读者号, B.姓名, C.书名
order by count(A.书号) desc

题目最后“并按借阅本书多少降序排列”,“本书”是否写错了,是“本数”吧
相似回答