a表
id
1
2
3我想根据a表id批量插入b表和c表id1和sl,其中b表和c表id和a表id关联,示例id=1如下,我想得到当a表id=2 或其它值时,批量插入b表和c表
b表
id   id1  sl
1     1   2
1     2   2
1     3   2
1     4   2
1     5   2
1     6   2
c表
id    id   sl
1     1    1
1     1    2
1     2    1
1     2    2
1     3    1
1     3    2
1     4    1
1     4    2
1     5    1
1     5    2
1     6    1
1     6    2

解决方案 »

  1.   

    关联 (select number as N from master..spt_value where type = 'p')
      

  2.   

    少一个Sselect number as N from master..spt_values where type = 'p'
      

  3.   

    ------------------------------------------------------------------------
    -- Author : HappyFlyStone 
    -- Date   : 2009-08-12 23:01:42
    -- Version: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86) 
    --       Apr 14 2006 01:12:25 
    --       Copyright (c) 1988-2005 Microsoft Corporation
    --       Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
    --      
    -------------------------------------------------------------------------- Test Data: ta
    IF OBJECT_ID('[ta]') IS NOT NULL 
        DROP TABLE [ta]
    Go
    CREATE TABLE ta([id] INT)
    Go
    INSERT INTO ta
       SELECT 1 UNION ALL
       SELECT 2 UNION ALL
       SELECT 3 
    GO
    --Start
    SELECT 
    * ,2 as sl
    FROM
    TA a
    ,(select number as N from master..spt_values where type = 'p' and number >0) b
    where b.n <= 6
    order by id
    --Result:
    /*id          N           sl
    ----------- ----------- -----------
    1           1           2
    1           2           2
    1           3           2
    1           4           2
    1           5           2
    1           6           2
    2           1           2
    2           2           2
    2           3           2
    2           4           2
    2           5           2
    2           6           2
    3           1           2
    3           2           2
    3           3           2
    3           4           2
    3           5           2
    3           6           2(18 行受影响)*/
    --End 
      

  4.   

    我想根据a表id批量插入b表和c表id1和sl,其中b表和c表id和a表id关联,示例id=1如下,我想得到当a表id=2 或其它值时,批量插入b表和c表
    b表
    id  id1  sl
    1    1  2
    1    2  2
    1    3  2
    1    4  2
    1    5  2
    1    6  2
    c表
    id    id1  sl
    1    1    1
    1    1    2
    1    2    1
    1    2    2
    1    3    1
    1    3    2
    1    4    1
    1    4    2
    1    5    1
    1    5    2
    1    6    1
    1    6    2对不起c表为id1
    讲起来有点复杂为一包装箱
    a为包装主表
    1箱=6筒=12卷
    a表为箱表,b表为筒表,c表为卷表目的是卷满2卷变成一筒,6筒变成一箱,我是想为了计算重量[/Quote]
      

  5.   

    不知道这个是不是你想要的:IF OBJECT_ID('[tb]') IS NOT NULL 
        DROP TABLE [tb]
    Go
    CREATE TABLE tb([id] INT,id1 int,sl int)
    Go
    IF OBJECT_ID('[tc]') IS NOT NULL 
        DROP TABLE [tc]
    Go
    CREATE TABLE tc([id] INT,id1 int,sl int)
    Godeclare @id int,@n int ,@m int
    set @id=5
    set @n=1
    set @m=1while @m<=6
      begin
    while @n<=@id
      begin 
    insert tb values( @id,@m,2)
    set @n=@n+1
          end
        set @m=@m+1
    set @n=1
      endselect * from tb
    /*
    id          id1         sl
    ----------- ----------- -----------
    5           1           2
    5           1           2
    5           1           2
    5           1           2
    5           1           2
    5           2           2
    5           2           2
    5           2           2
    5           2           2
    5           2           2
    5           3           2
    5           3           2
    5           3           2
    5           3           2
    5           3           2
    5           4           2
    5           4           2
    5           4           2
    5           4           2
    5           4           2
    5           5           2
    5           5           2
    5           5           2
    5           5           2
    5           5           2
    5           6           2
    5           6           2
    5           6           2
    5           6           2
    5           6           2
    */
    --(30 行受影响)set @n=1
    set @m=1
    declare @mm int
    set @mm=1while @m<=6
    begin 
    while @n<=@id
      begin
    while @mm<=2
    begin
    insert tc values(@id,@m,@mm)
    set @mm=@mm+1
    end
    set @mm=1
    set @n=@n+1
      end
    set @n=1
    set @mm=1
    set @m=@m+1
    endselect * from tcid          id1         sl
    ----------- ----------- -----------
    5           1           1
    5           1           2
    5           1           1
    5           1           2
    5           1           1
    5           1           2
    5           1           1
    5           1           2
    5           1           1
    5           1           2
    5           2           1
    5           2           2
    5           2           1
    5           2           2.......(60 行受影响)
      

  6.   

    CREATE   PROC PR_ZPBZ
    @BZID INT, @JS varchar(10), @ZL decimal(18,3),@xjsl int,@ggid int,@jsl int,@dsl int,@ggbm varchar(10),@gg varchar(10),@xrl varchar(10),@rq datetime,@BZJH varchar(10),@scph varchar(10),@fzs varchar(10)as
    BEGIN TRAN
    if @ggid=1 or @jsl=@dsl  
    begin
    insert into TSC_BZX(bzxid,zXbm,rq,ggbm,trl,xrl,xnjs,xnts,zzl,zt,bzjh,scph,fzs) values (@ggid,@ggbm,@rq,@gg,@js,@xrl,1,1,@zl,0,@bzjh,@scph,@fzs)
    insert into TSC_BZT(bzxid,bztid,sl,zzl) values (@ggid,1,1,@zl)
    insert into TSC_BZJ(bzxid,bztid,sl,zl) values (@ggid,1,1,@zl)
    end;
    else
    begin
    insert TSC_BZJ select @BZID,case when sl=@JS then bztid+1 else bztid end,case when sl=@JS then 1 else sl+1 end, @ZL from (select top 1 bzxid,bztid,sl from TSC_BZj order by id desc) t 
    if @xjsl=@js
    insert TSC_BZT select @BZID, bztid+1,case when sl=@JS then 1 else sl+1 end,@zl from  (select top 1 bzxid,bztid,sl from TSC_BZT  order by bzxid desc,bztid desc) t else
    update tsc_bzt set tsc_bzt.sl=tsc_bzt.sl+1,zzl=(select sum(zl) as zzl from tsc_bzj where bztid=t.bztid and bzxid=@bzid) from  (select top 1 bzxid,bztid,sl from TSC_BZt order by id desc) t where tsc_bzt.bztid=t.bztid and  tsc_bzt.bzxid=@BZIDupdate tsc_bzx set zzl=(select sum(zl) as zzl from tsc_bzj where bzxid=@BZID),xnjs=(select count(bzxid) from tsc_bzj where bzxid=@BZID),xnts=(select count(bzxid) from tsc_bzt where bzxid=@BZID)  where bzxid=@BZIDGO
    这是我完整的包装程序,楼主辛苦了,可是和我的想法不对呀tsc_bzx为a表tsc_bzt为b表,tsc_bzj为c表