24小时热门版块排行榜    

查看: 2865  |  回复: 23

淡淡0987

铜虫 (初入文坛)

[求助] 一个简单的SQL查询 已有1人参与

1. 用SQL语言实现下述功能。
设有一个简单的图书管理数据库,包含如下三个关系表:
图书关系表:Book(BNO, Title, Author, Publisher, Price),
其中BNO, Title, Author, Publisher, Price分别表示图书的总编号、书名、
作者、出版单位和单价;
读者关系表:Reader(LNO,  Name, Unit),
其中LNO,  Name, Unit分别表示读者的借书证号、姓名和所在单位;
借阅关系表:Loan(LNO, BNO, Date)
  其中LNO, BNO, Date分别表示借阅图书的借书证号、所借图书的总编号和借书日期。
查询至少借阅了0287号图书和0398号图书的读者号。
回复此楼
且行且珍惜
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

淡淡0987

铜虫 (初入文坛)

引用回帖:
2楼: Originally posted by hx_zm at 2013-10-20 16:27:58
select lno from Loan where  BNO = '0287'  and lno in (select lno from Loan where  BNO = '0398' )

这个不对,至少借阅,不是只借阅
且行且珍惜
3楼2013-10-20 22:07:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

adong76

禁虫 (正式写手)

感谢参与,应助指数 +1
本帖内容被屏蔽

5楼2013-10-21 10:33:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

hx_zm

铁杆木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
select lno from Loan where  BNO = '0287'  and lno in (select lno from Loan where  BNO = '0398' )
2楼2013-10-20 16:27:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hx_zm

铁杆木虫 (著名写手)

引用回帖:
3楼: Originally posted by 淡淡0987 at 2013-10-20 22:07:47
这个不对,至少借阅,不是只借阅...

逻辑都搞不清
4楼2013-10-21 08:34:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

淡淡0987

铜虫 (初入文坛)

引用回帖:
5楼: Originally posted by adong76 at 2013-10-21 10:33:02
两种方法:
1. 采用子查询:(思路为在内部子查询结果基础上,按照读者号分组,如果某个组中成员数量为2,就代表该读者借阅过那两本书)
select lno from
(select distinct bno, lno from loan
where bno=’0 ...

子查询里where语句感觉不对,自身连接限制最后得出结果只有借阅0287和0398的读者号
且行且珍惜
6楼2013-10-21 15:33:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

adong76

禁虫 (正式写手)

本帖内容被屏蔽

7楼2013-10-21 15:42:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

淡淡0987

铜虫 (初入文坛)

引用回帖:
7楼: Originally posted by adong76 at 2013-10-21 15:42:50
自连接的确是有问题,达不到你的要求,请忽略它。
子查询内部虽然采用的是“或者”运算符,得到借阅其中一本图书的读者,但经过主查询中的分组和having条件筛选,保留下来的都是同时借过两本书的读者了,感觉这个 ...

你会用exists吗,,我没看懂,感觉这个可以解决,就是不会用
且行且珍惜
8楼2013-10-21 18:10:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

稻草菲菲

新虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
M=select * FROM LOAN WHERE BNO=0287
N =select * from loan where bno=0369
select * from M inner join N on m.lno=n.lno

[ 发自手机版 http://muchong.com/3g ]
9楼2013-10-21 19:48:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

adong76

禁虫 (正式写手)

本帖内容被屏蔽

10楼2013-10-21 19:54:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 淡淡0987 的主题更新
信息提示
请填处理意见