【问题标题】:database relational algebra , sql query数据库关系代数,sql查询
【发布时间】:2017-04-14 10:03:51
【问题描述】:

5.考虑以下库架构

Books (book_no,title,authors,publisher)
Borrower(borrower_id, name, DOB, job)
Borrowed(borrower_id,book_no,date)

用关系代数写出以下查询

  • 一个。查找已借用“Wiley”出版的 3 本以上书籍的借款人的姓名和borrower_id
  • 乙。查找借过“wiley”出版的任何书籍的借款人的姓名
  • c。求每个借书人平均借书的数量。

【问题讨论】:

  • 到目前为止你尝试了什么??
  • 你有什么问题?到目前为止,您尝试了什么?
  • 一个。您需要加入表格并按操作分组并给出条件 Wiley,b。只需通过加入所需的表来给出条件,c。与“a”相同,但不需要条件,只需计数
  • 所有这些都需要在关系代数中完成,而不是SQL。如果您自己回答这些问题,我认为您将受益最大。学习愉快!
  • 请参考您应该使用的“关系代数”。有许多。公认的答案是(仍然)SQL 不是任何常见的关系代数变体。

标签: database relational-algebra


【解决方案1】:

根据你的问题,sql查询是这样的

对于问题 1

select B.borrower_id, B.name 
  from Borrower as B, Borrowed as Bw, Books as Bk
 where B.borrower_id = Bw.borrower_id
   and Bw.book_no = Bk.book_no
   and Bk.publisher = 'Wiley'
group by B.borrower_id, B.name 
having count(Bw.borrower_id) > 3

关于问题 2

select B.name 
  from Borrower as B, Borrowed as Bw, Books as Bk
 where B.borrower_id = Bw.borrower_id
   and Bw.book_no = Bk.book_no
   and Bk.publisher = 'Wiley'
  group by B.name

关于问题 3

select B.borrower_id, B.name, count(Bw.borrower_id) as cnt 
  from Borrower as B, Borrowed as Bw, Books as Bk
 where B.borrower_id = Bw.borrower_id
   and Bw.book_no = Bk.book_no
group by B.borrower_id, B.name

【讨论】:

  • 这仍然是 SQL 而不是任何常见的关系代数变体。
猜你喜欢
  • 2016-08-12
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多