数个结构相同的表进行联合查询遇到的二个问题
1.就是GROUP BY 分组,
我看SQL帮助,说只能在最后一个SELECT 中使用GROUP BY 
例句
select t001.商品ID as 商品编号,商品名称,sum(t001.商品数量) as 库存量 from t001 inner join 商品资料表 on 商品资料表.商品ID=t001.商品ID union select t002.商品ID as 商品编号,商品名称,sum(t002.商品数量) as 库存量 from t002 inner join t002资料表 on t002资料表.商品ID=t002.商品ID union select t003.商品ID as 商品编号,商品名称,sum(t003.商品数量) as 库存量 from t003 inner join t003资料表 on t003资料表.商品ID=t003.商品ID group by  t001.商品ID , t002.商品ID , t003.商品ID ,商品编号,商品名称我该如何写GROUP BY 2.就是所有记录都查询在一个记录集中,能否达到那个记录来直与那个表的显示。
   如在查询中增加一个列,列中记录是这条记录来至哪个表
 如结果:
 id    名称     数量     EXP100
001    A        5        t001
谢谢

解决方案 »

  1.   

    关于三表联合查询的sql语句  
     
    问题:表1 进货表
      
      商品编号    进货    供应商
        1          5        a
        1          4        b表2  销售表
       商品编号   销售     单位     1         3        x
         1         2        y
    表3 库存表     商品编号 库存
            1      100
    我想得到得表为
         
          商品编号  库存   进货   销售
             1      100     5+4    3+2方法一select AA.库存,bb.进货,cc。销售
    from (select 商品编号,sum(库存) from 库存 group by 商品编号)aa,
            (select ,商品编号,sum(进货) from 进货表 group by 商品编号)bb,
            (select 商品编号,sum(销售) from 销售表 group by 商品编号)cc
    where aa.商品编号=bb.商品编号=cc。商品编号评价:利用该方法确实可以实现,但速度很慢.方法二select 商品编号,sum(库存),sum(进货),sum(销售)
    from 
    (select 商品编号,sum(库存) as 库存,0 as 进货,0 as 销售
      from 库存表
      group by 商品编号
    union all
     select 商品编号,0 as 库存,sum(进货) as 进货,0 as 销售
      from 进货表
      group by 商品编号
    union all
     select 商品编号,0 as 库存,0 as 进货,sum(销售) as 销售
      from 销售表
      group by 商品编号
    ) t1
    group by 商品编号评价:利用该方法很巧,速度很快.我就是使用该方法解决问题方法三select A.商品编号, 
           A.库存, 
           (select sum(进货) from 进货表 where 商品编号 = A.商品编号) 进货,
           (select sum(销售) from 销售表 where 商品编号 = A.商品编号) 销售
    from 库存表 A评价:利用该方法思路不错,速度也不错.但是在检索的过程中有中断的情况.方法四我曾用数据管道来解决该问题,
    把库存表根据编码聚合和进货表合成利用数据管道形成新表
    同时把销售表聚合利用数据管道形成新表最后两个表形成结果问题是解决了,但存在新的问题,如果对基本表没有更新或只有一次更新,结果正确
    但如果对基本表第二次更新,此时,在运行数据管道,则会死机. 
     
      

  2.   

    rainstormmaster(rainstormmaster) ( ) 信誉:115 
        我第一个问题已经解决
        第二个问题该如何解决拉?