【问题标题】:Joining three tables. Two related, and one unrelated to the other two连接三个表。两个相关,一个与另外两个无关
【发布时间】:2019-04-27 23:03:24
【问题描述】:

我想创建一个名为 ShowAllBooksBorrowed 的视图,用于显示已从图书馆借出但未归还的所有图书的信息(BookName、ISBN、BookCategoryName、BookAuthor、BorrowedDate、ReturnDate、ActualReturnDate)。

我无法确定如何使用 Books 表中的信息将 BorrowerInfo 表与 BookInfo 和 BookCategory 表关联起来。我了解它的关系,但我不确定如何执行此操作。我想我可能需要使用 Union 或 CrossJoin?

这是我的数据库:

【问题讨论】:

  • 如果这本书还没有真正归还,那么显示ActualReturnDate 似乎没有多大意义。
  • 表(基础、视图和查询结果)表示关系(船舶)/关联。 FK 有时被称为“关系”,但它们不是;他们说子行出现在其他地方。表含义是查询的必要和充分条件。查询时不需要约束——包括 CK、PK 和 FK。它们是表关系(船)/关联选择的结果以及可能出现的情况/状态。

标签: sql sql-server join view


【解决方案1】:

您可以创建如下所示的视图:

create view show_all_books_borrowed as 
select
  k.bookname,
  b.isbn,
  c.bookcategoryname,
  k.bookauthor, 
  w.borrowdate, 
  w.returndate, 
  w.actualreturndate
from books b
join borrowerinfo w on w.bookid = b.bookid
join bookinfo k on k.isbn = b.isbn
join bookcategory c on k.bookcategoryid = c.bookcategoryid
where w.actualreturndate is null

【讨论】:

  • 非常感谢,成功了!看到代码后,我知道我会有一个“DUH”的时刻。
猜你喜欢
  • 2020-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 2015-05-01
相关资源
最近更新 更多