二、 
书表(books) 
book_id,book_name,creatdate,Lastmodifydate,decription 
001,三个人的世界,2005-02-02,2005-07-07,NULL 
作者表(authors) 
A_id,A_name 
01,王纷 
02,李尚 
03,泰和 
部门表(depts) 
d_id,d_name 
001,编辑一部 
002,编辑二部 
003,编辑三部 
书和作者关联表(bookmap) 
book_id,A_id 
001,01 
001,02 
001,03 
部门和作者关联表(depmap) 
d_id,a_id 
001,01 
002,02 
003,03 
找出每个部门的所写的总书两,比如,一本书有3个人写,如果三个人在不同的部门,则每个部门的总数量就是1.最后结果如下: 
部门,书量 
编辑一部,1 
编辑二部,1 
编辑三部,1 

解决方案 »

  1.   


    select d_name,书量 from depts a left join depmap b on a.d_id=b.d_id
    left join (select a_id,书量=count(*) from [bookmap] group by a_id) c
    on b.a_id=c.a_id--结果:
    d_name   cnt
    -------- -----------
    编辑一部     1
    编辑二部     1
    编辑三部     1
      

  2.   

    我的解答是:select d_name,sum(P.书量) as 书量 from depts c left join depmap d on c.d_id = d.d_id left join 
    (select a.a_id,count(a.book_id) as 书量 from bookmap a left join books b on a.book_id=b.book_id group by a.a_id) as P
    on p.a_id=d.a_id group by d_name order by d_name desc不知道为什么结果是:d_name                                             书量          
    -------------------------------------------------- ----------- 
    编辑一部                                               1
    编辑三部                                               1
    编辑二部                                               1请高手帮忙纠正一下。
      

  3.   

    ----------------
    ----------------
    select * from(
    select d_name,sum(P.书量) as 书量 from depts c left join depmap d on c.d_id = d.d_id left join 
    (select a.a_id,count(a.book_id) as 书量 from bookmap a left join books b on a.book_id=b.book_id group by a.a_id) as P 
    on p.a_id=d.a_id group by d_name order by d_name desc )as A
    order by d_name collate Chinese_PRC_Stroke_ci_as