select o.out_pages, sum( o.out_total) from receipt_out o join receipt_in i on (o.out_pages= i.in_pages)  group by o.out_pages
我写了这个sql语句,但是老是有笛卡尔积,total出现了一个比预想的要大得多的数,也就是请问各位这是什么原因?该怎么改?
ps:这个语句是为了计算receipt_out中不同种类的out_pages的out_total的值的和,out_pages必须是在receipt_in中的in_pages出现过的。请大侠指教

解决方案 »

  1.   


    select out_pages,sum(out_total) 
    from receipt_out 
    where exists(
           select * from receipt_in 
           where in_pages=receipt_out.out_pages
          )
    group by out_pages
      

  2.   


    select o.out_pages, sum(o.out_total) 
    from receipt_out o,receipt_in i
    where o.out_pages= i.in_pages
    group by o.out_pages 
      

  3.   

    tracycc 这条语句我试过了,跟内连接的效果是一样的