0

テーブル構造(これは効率的ではありませんが、それを操作する必要があり、変更することはできません。):

大学テーブル-UniversityName、UniversityId

BookLeaseテーブル-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"

これは間違っていて非効率的なようです。それは...ですか?これを書くためのより良い方法はありますか?

4

2 に答える 2

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]
于 2012-10-26T09:10:09.353 に答える
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"
于 2012-10-26T09:14:33.577 に答える