表结构(效率不高,但我必须使用它,我无法更改它。):
大学表 - UniversityName,UniversityId
BookLease Table - BookId,UniversityId,LeaseDate
书籍表 - BookId,UniversityId,Category,Page_Count。
到目前为止,我要查找大学的总页数,其名称为“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"
这似乎是错误和低效的。是吗?有没有更好的方法来写这个?
答案 0 :(得分:0)
你可以这样做:
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]
答案 1 :(得分:0)
直接加入桌面,而不是在子查询上加入:
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"