我的数据库有三个表A(品种,单价,库存),B(类,品种,用量),C(订单,类,数量)
例如:
A 品种   单价   库存
  铅笔   0.2    50000
  钢笔   1.2    50000
  毛笔   0.5    50000
  圆珠笔 0.6    50000
  水写笔 2      50000B 类        品种     用量
  一年级    铅笔     50
  一年级    圆珠笔   30 
  二年级    钢笔     100
  二年级    毛笔     50
  二年级    水写笔   100
  三年级    毛笔     50
  三年级    钢笔     100
  三年级    水写笔   50
  三年级    铅笔     50
C 订单      类       数量
  001       一年级   100
  001       二年级   100
  002       一年级   200
  002       二年级   300
  002       三年级   100
现在想做的是从C表中查处001和002订单那些品种库存不足。想法是这样的 想从C表中把类型相同的类数量相加
C 订单      类       数量
  001+002   一年级   200
  001+002   二年级   400
  002       三年级   100
这样就得出总共的数量 然后在用这个相加后的结果在B表中相加
B 类        品种     用量   数量
  一年级    铅笔     50     200
  一年级    圆珠笔   30     200
  二年级    钢笔     100    400
  二年级    毛笔     50     400
  二年级    水写笔   100    400
  三年级    毛笔     50     100
  三年级    钢笔     100    100
  三年级    水写笔   50     100
  三年级    铅笔     50     100
然后把上面的这个B表中相同的项相加并和数量综合
  品种     数量
  铅笔     15000
  圆珠笔   6000
  钢笔     50000
  毛笔     25000
  水写笔   45000
最后把这个表和A表的库存想比较
 品种   单价   库存     数量     库存剩余
 铅笔   0.2    50000    15000    35000
 钢笔   1.2    50000    50000    0
 毛笔   0.5    50000    25000    25000
 圆珠笔 0.6    50000    6000     44000
 水写笔 2      50000    45000    5000
想用SQL查询语句来实现,想了一下午头有都想晕了理不出思路来。希望朋友们帮帮忙
 
  

解决方案 »

  1.   

    select a.品种,a.单价,a.库存,b.数量,a.库存-b.数量 as 库存剩余 From A Left join 
    (select 品种,数量 From(
    select a.类,a.品种,a.用量,b.数量 From B left join 
    (select 类,sum(数量)as 数量 From C
    Group by 类)b on a.类=b.类)
    Group by 品种)b on a.品种=b.品种手写,未经测试
      

  2.   

    B表是没有数量这个字段 数量这个字段的数值是靠C表的数量和B表用量来一起计算的
      

  3.   

    有点疑问
    1,C 订单      类      数量 
      001+002  一年级  200 
      001+002  二年级  400 
      002      三年级  100 
    一年级的200是怎么加出来的200的
    C 订单      类      数量 
      001      一年级  100 
      001      二年级  100 
      002      一年级  200 
      002      二年级  300 
      002      三年级  100 
    一年级相加应该是300
    2,然后把上面的这个B表中相同的项相加并和数量综合 
      品种    数量 
      铅笔    15000 
      圆珠笔  6000 
      钢笔    50000 
      毛笔    25000 
      水写笔  45000
    你说的相同项相加并和数量综合是什么概念?是相乘吗?
    是怎么个相同项相加,怎么和数量进行综合的?
    先回答这些吧.
      

  4.   

    select a.品种,a.单价,a.库存,b.数量,a.库存-b.数量 as 库存剩余 From A表 Left join 
    (select 品种,数量 
      From
       (select B表.类,B表.品种,B表.用量,bb.数量 
             From B表 left join 
           (select 类,sum(数量)as 数量 From C表 Group by 类 )bb on B表.类=bb.类)
     Group by 品种
      )cc on A表.品种=cc.品种
      

  5.   

    SELECT A.品种,A.单价,A.库存,D.综合,(A.库存-D.综合) as 库存
    from A,
    (SELECT B.品种,sum(B.用量*C.数量) as 综合
    FROM C,B
    where B.类=C.类 
    group by B.品种) D
    where A.品种=D.品种
      

  6.   

    谢谢大家~!问题也根据大家所的用SUM +group by 搞定