表a
---------------------
item_id name
86 西冷
87 上脑前
88 蹄筋
89 撒撒米 表b
--------------------------------------------------
VEHICLE VEHICLE_NUM WHITHER
货车 辽BXF589    大连
飞机 SC4626     青岛如何生成
表c
------------------------------------------------------------------------
item_id name VEHICLE VEHICLE_NUM WHITHER
86 西冷 货车 辽BXF589    大连
87 上脑前 飞机 SC4626     青岛
88 蹄筋 货车 辽BXF589    大连
89 撒撒米 飞机 SC4626     青岛

解决方案 »

  1.   

    没有关联字段啊,唯一能看出规律的就item_id为双数时辽BXF589    大连
    单数时SC4626     青岛
      

  2.   

    给你想了变通的办法
    select a.*,b.VEHICLE,b.VEHICLE_NUM,WHITHER
    from a,
    (select row_number() over(order by VEHICLE ) rn,b.*
    from b
    order by VEHICLE 
    ) b
    where mod(a.item_id)=b.rn-1这条语句只是查询,而且基于b表有两条纪录,连接规律按ID单双号
    如果想生成新的表C,可用存储过程
      

  3.   

    a表和b表是没有关联的,a表数据多,b表数据少些,就是把b表数据补充到a表,生成c表就行
      

  4.   

    关键你要给出两张表的联接规律,没有联接规律就只能统统联接,会出现许多你不想要的字段
    就像我上面写的,我设的连接条件就是单号连大连的卡车,双号连青岛的飞机
    如果你的B表里的数据不止这么点,那一点要相清楚你A表和B表的连接的规律,否则只能做全连接
      

  5.   

    是啊,a表是产品,b表是运输信息,a表数据很多都是因为原来没有运输信息,所以临时编造了一个b表,为了能显得真实点,就编了14条运输记录,,,现在就想把编造的这14条数据,补充到a表中,,所,a,b两表也不需要什么规律,能把b表补充到a表就可以了
      

  6.   

    如果没有规律,直接连接
    select * from a,b
    就会出现以下结果
    item_id name VEHICLE VEHICLE_NUM WHITHER
    86 西冷 货车 辽BXF589    大连
    86 西冷 飞机     SC4626     青岛
    87 上脑前 货车 辽BXF589    大连
    87 上脑前 飞机 SC4626     青岛
    88 蹄筋 货车 辽BXF589    大连
    88 蹄筋 飞机 SC4626     青岛
    89 撒撒米 货车 辽BXF589    大连
    89 撒撒米 飞机 SC4626     青岛
    ==================================
    这样的结果,你还不如一条条手工加纪录
      

  7.   

    lintao82(佛跳墙) ( ) 信誉:100  2007-09-19 13:23:03  得分: 0  
     
     
       这样不行啊,出现同样的两个产品,b表14条记录每个产品出来14个怎么行,一个产品只能出现一个
      
     
    ===========================================================================
    在你没有规律的前提下,那只有一个办法,办法总是有的
    就是:手工修改每条纪录
      

  8.   

    看样子你是要从B表随便取一条纪录和A表组合插纪录到C表,
    你可以写个存储过程,先用游标取出A表的纪录
    在做循环的时候,从B表用随机函数取一条纪录
    随机函数
    可以这样取
    select b.VEHICLE,b.VEHICLE_NUM,B.WHITHER
    into t_VEHICLE,t_VEHICLE_NUM,t_WHITHER
    from 
    (select row_number() over(order by VEHICLE ) rn,b.*
    from b
    order by VEHICLE 
    ) b
    where b.rn=dbms_random.random (1,15)把取出来的三个字段与当前游标的item_id,name一起用INSERT语句插到C表去
      

  9.   

    CREATE OR REPLACE PROCEDURE sp_new_c(  
    )
    IS
        v_item_id  a.item_id%type;
        v_name    a.name%type;
    t_VEHICLE b.VEHICLE%type;
    t_VEHICLE_NUM b.VEHICLE_NUM%type;
    t_WHITHER     b.WHITHER%type   CURSOR csr IS
          SELECT item_id,name
            FROM a
                 BEGIN
           
          OPEN csr;      LOOP
          FETCH csr INTO  v_item_id,v_name;       EXIT WHEN csr_gift%NOTFOUND;         /* 商品别赠品的 数量篮 盔商品狼 订单数量苞 促甫 水档 乐促. */
             select b.VEHICLE,b.VEHICLE_NUM,B.WHITHER
    into t_VEHICLE,t_VEHICLE_NUM,t_WHITHER
    from 
    (select row_number() over(order by VEHICLE ) rn,b.*
    from b
    order by VEHICLE 
    ) b
    where b.rn=dbms_random.random (1,15)        insert into c(item_id,name,VEHICLE,VEHICLE_NUM,WHITHER) values(v_item_id,v_name,t_VEHICLE,t_VEHICLE_NUM,t_WHITHER)
                      END LOOP;      CLOSE csr;
       END IF;
       COMMIT ;END;
    /
    写了个存储过程,楼主参考下吧
      

  10.   

    CREATE OR REPLACE PROCEDURE sp_new_c(  
    )
    IS
        v_item_id  a.item_id%type;
        v_name    a.name%type;
    t_VEHICLE b.VEHICLE%type;
    t_VEHICLE_NUM b.VEHICLE_NUM%type;
    t_WHITHER     b.WHITHER%type   CURSOR csr IS
          SELECT item_id,name
            FROM a
    BEGIN
          OPEN csr;
          LOOP
          FETCH csr INTO  v_item_id,v_name;       EXIT WHEN csr_gift%NOTFOUND;         select b.VEHICLE,b.VEHICLE_NUM,B.WHITHER
    into t_VEHICLE,t_VEHICLE_NUM,t_WHITHER
    from 
    (select row_number() over(order by VEHICLE ) rn,b.*
    from b
    order by VEHICLE 
    ) b
    where b.rn=dbms_random.random (1,15)        insert into c(item_id,name,VEHICLE,VEHICLE_NUM,WHITHER) values(v_item_id,v_name,t_VEHICLE,t_VEHICLE_NUM,t_WHITHER)
                 END LOOP;
          CLOSE csr;
        COMMIT ;END;上面有些东西没删除干净