商品表格式是SPDM,SPMC,LB(表名shangpin)
商品规格1表格式是SPDM,GG1DM,GG1MC(表名GG1)
商品规格2表格式是SPDM,GG2DM,GG2MC(表名GG2)A单据格式DJBH,CKDM(表名A)
B单据格式DJBH,SPDM,GG1DM,GG2DM,SL1,SL2(表名B)想将shangpin表里的LB字段等于001的SPDM,SPMC以及所对应的GG1表里的GG1DM和GG2表里的GG2DM全插入到B表里,条件是A表的CKDM所对应DJBH在B表里没有的SPDM插入格式是 DJBH,SPDM,GG1DM,GG2DM,SL1,SL2  (DJBH和SL1,SL2都是固定值)
(一个shangpin表里的SPDM对应多个GG1表里的GG1DM和GG2表里的GG2DM)

解决方案 »

  1.   

    insert b ( DJBH,SPDM,GG1DM,GG2DM,SL1,SL2  )
    select 
     a.DJBH,s.SPDM,g.GG1DM,c.GG2DM
    ,SL1  = 1
    ,SL2  = 1
    from a
    cross join shangpin s
    inner join GG1 g on s.SPDM = g.SPDM
    inner join GG2 c on s.SPDM = c.SPDM
    where a.lb = '001'
    and not exists (
    select 1 from b
    where a.DJBH = b.DJBH
    and b.SPDM = s.SPDM
    )
      

  2.   

    insert into xxx(列名)
    select 列名
    (组合查询)格式就是上面部分,然后你那些固定值的话,只需要select '1' ad djbh这样替换就可以了。
      

  3.   

    说的不够清楚,或许应该更严格insert b ( DJBH,SPDM,GG1DM,GG2DM,SL1,SL2  )
    select 
     a.DJBH,s.SPDM,g.GG1DM,c.GG2DM
    ,SL1  = 1
    ,SL2  = 1
    from a
    cross join shangpin s
    inner join GG1 g on s.SPDM = g.SPDM
    inner join GG2 c on s.SPDM = c.SPDM
    where a.lb = '001'
    and not exists (
    select 1 from b
    where a.DJBH = b.DJBH
    and b.SPDM = s.SPDM
    and b.GG1DM = g.GG1DM
    and b.GG2DM = c.GG2DM
    )
    确定是否正确的方法是,先查询这个语句的select 部分,查看数据是否是你要的,是才执行整个语句