材料表A
rowid   name    parentid   type
  1    C10        0          1
  2    C20        0          1
  3    C10          1          1
  4    C10细石      1          1
  5    C20         2          1
  6    C20细石       2          1
  7     水泥         0          0
  8     矿粉         0          0
  9     煤灰         0          0生产表B
shengchanid   cailiaoid   fangliang
 1               3            100
 2               4            100
 3               5            200
 4               6            200消耗表C
xiaohaoid   shengchanid   cailiaoid  xiaohaoshuliang 
 1             1              7          10
 2             1              8          20
 3             1              9          30
 4             2              7          15
 5             2              8          15
 6             2              9          15
 7             3              7          20
 8             3              8          20
 9             3              9          20
 10            4              7          25
 11            4              8          25
 12            4              9          25
要求查询结果
产品name   fangliang  消耗name  消耗shuliang
C10           200      水泥        25
C10           200      矿粉        35
C10           200      煤灰        45
C20           400      水泥        45
C20           400      矿粉        45
C20           400      煤灰        45sql

解决方案 »

  1.   

    说明 材料表type的值为1表示成品 0表示消耗品 成品材料中子类的parentid就是父类的rowid。 结果表里面就是把所有子类的加起来 都算在父类身上 
      

  2.   

    MYSQL不支持递归查询,用SP完成
      

  3.   

    http://blog.csdn.net/acmain_chm/article/details/4142971
    MySQL中进行树状所有子节点的查询
    在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们...