Sql 三表联接

Sql 三表联接,sql,Sql,表结构(效率不高,但我必须使用它,我无法更改它): 大学表-大学名称,大学ID 图书租赁表-图书编号,大学,租赁日期 书桌-书号、大学、类别、页数 我必须找到迄今为止读/租的大学的总页数,这所大学的名字是“XYZ”。这就是我到目前为止所做的: select sum(bookTable.Page_count) from University u join (select bl.UniversityId AS universityId, b.page_count as Counter

表结构(效率不高,但我必须使用它,我无法更改它):

大学表-大学名称,大学ID

图书租赁表-图书编号,大学,租赁日期

书桌-书号、大学、类别、页数

我必须找到迄今为止读/租的大学的总页数,这所大学的名字是“XYZ”。这就是我到目前为止所做的:

select sum(bookTable.Page_count) 
from University u
join (select bl.UniversityId AS universityId, b.page_count as Counter
       BookLease bl
       join Book bk
            on bl.BookId = bk.BookId) as bookTable
on  
     bookTable.universityId = u.UniversityId
where
     u.Name = "XYZ"
这似乎是错误和低效的。它是?有没有更好的方法写这篇文章?

您可以这样做:

select 
   sum(b.page_count) as pages_read
   , count(bl.bookid) as no_leased
from university u 
   inner join book b on b.universityid = u.universityid
   inner join booklease bl on bl.bookid = b.bookid
                           and bl.universityid = u.universityid
where u.name = 'XYZ'
and bl.lease_date > [some lease date]

直接在表上联接,而不是在子查询上联接:

select
  sum(bk.Page_count) 
from
  University u
  inner join BookLease bl on bl.UniversityId = u.UniversityId
  inner join Book bk on bk.BookId = bl.BookId
where
  u.Name = "XYZ"

哪个SQL?也提供版本。sql中有错误。b不是有效的表别名。书页数是在书本中还是在书契中?@CODEGY007:“书桌-书号,大学,类别,书页数。”对于总租赁:选择计数(*)从booklease bl inner加入bl.universityid=u.universityid,其中u.universityName='xyz'-1如果您没有加入
booklease
表上的
Book
表,那么您只会得到可用书籍中的页数,而不是读/租的页数。@Guffa:我已经在第二个SQL中将其添加到了加入。实际上,在重读这个问题之后,我已经删除了第一个SQL。为什么要计算bl.bookId?这代表什么?我的查询只有一行-租用的总页数。。。您的查询将有多少行?另外,我的查询是错误的还是效率低下?