一个网上书店系统,有以下三个表
(books)书本表格  book_id(书本id),book_name(书名),..........
(comments)书本评论表 comment_id(评论id),user_id(用户id),book_id(书本id),comment_content(评论内容),.............
(orderdetails)订单明细表 orderdetail_id(订单明细id),order_id(订单id),book_id(书本id),orderdetial_quantity(数量),orderdetail(价格),......... //===========================我想用一个下查询查询出每本书的评论次数,和销售数量,如下
SELECT b.book_id, b.book_name,
SUM(od.orderdetial_quantity) AS book_sales_count   --销售数量
,COUNT(c.comment_id) AS book_comment_count   --评论次数
FROM dbo.books b LEFT OUTER JOIN
      dbo.comments c      ON b.book_id = c.book_id LEFT OUTER JOIN
         orderdetails od ON b.book_id = od.book_id
GROUP BY b.book_id, b.book_name
但是有误,发现销售数量有错,
但是我分开查询
如 books 和 comments 接连查评论次数  对了
  books 和 orderdetails 连接查销售数量对了  
但是三个表连起来就是不对,请问大家,我错在那里~~??如果想一次查询出来,语句怎么写,谢谢拉~

解决方案 »

  1.   

    肯定有人知道,不过暂时高人不在哦...
    你这个不算菜鸟问题了
    不用left,用inner试试
      

  2.   

    我下班了
    我Copy回家给你做
    可否?
      

  3.   

    用 select x(select count(x) from 表)as from 表
    类似写法可可查询出
      

  4.   

    to leafsword_519(一度的温暖) 
    好的那就有劳你拉
      

  5.   

    select  b.book_id, b.book_name,
    (select count(*) from comments where book_id=b.book_id) as book_comment_count,
    (select sum(orderdetial_quantity) from orderdetails where book_id=b.book_id) as book_sales_count
     from books b这个是可以的
      

  6.   

    应该这样写:SELECT B.Book_ID,B.Book_Name,Count(C.Comment_ID) AS CommentCount,T.Quantity
    FROM Books B
    LEFT JOIN Comments C ON C.Book_ID=B.Book_ID
    LEFT JOIN (
    SELECT Book_ID,Sum(OrderDetial_Quantity) AS Quantity FROM OrderDetials GROUP BY Book_ID
    ) T ON T.Book_ID=B.Book_ID 
    GROUP BY B.Book_ID,B.Book_Name,T.Quantity 
    ORDER BY B.Book_ID
      

  7.   

    这样的问题应该来oracle或sqlserver问