如果基础表的编号是唯一的:SELECT 
  ta.id, ta.name, ta.num, SUM(tb.num), ta.num - SUM(tb.num)
FROM ta
LEFT JOIN tb ON ta.id = tb.id
GROUP BY ta.id
如果基础表的编号不是唯一的:
SELECT 
  ta.id, ta.name, SUM(ta.num)/COUNT(tb.id), SUM(tb.num), ta.num - SUM(tb.num)
FROM ta
LEFT JOIN tb ON ta.id = tb.id
GROUP BY ta.id

解决方案 »

  1.   

    犬犬,基础表编号不唯一时,为什么要除以count(tb.id)呢?现存数量好像应该是SUM(ta.num) - SUM(tb.num):)
      

  2.   

    犬犬说得对呀,我发现您们两个很积极在这里呀。
    有没想到“与运算”的多字符串正则表示式搜索了?
    我问了mysql.com,竟叫我交费学习,哈哈。
      

  3.   

    我也看不懂为什么要在第三列(购入数量)用:SUM(ta.num)/COUNT(tb.id),我想直接用
    :SUM(ta.num)就可以了。可能我没理解什么是编号不唯一。
    基础表编号不唯一是什么意思?
    1基础表
    编号    图书     购入总数   
    1        we         6
    1        we         3这种情况是不是编号不唯一?
    如果是的话,报表的第三列应该是9=SUM(ta.num) 啊?