呵呵,这样肯定是不行的啦
你的操作逻辑有问题哦,t2和t3按照什么顺序匹配插入t1?
得确定这个才能写程序哦

解决方案 »

  1.   


    insert into t1  
    select (select max(a)+1 from t1)a , e,f ,'1' from t2,t3
      

  2.   

    t1,t2,t3之间必须有一定的逻辑关系
    否则没有关系的瞎写sql,就算有效也是没有意义
    建议楼主在使用数据库之前应先学习下关系数据库原理特别是E-R关系
    理论基础要扎实才行
      

  3.   

    我理解的你的意思是这样的:
    t1中有四个字段,插入时a字段始终用最大值加1,b和c字段分别用t2的e和t3的f来填值,t2和t3记录数相等,都是从头到尾依次插入,t1的d字段用'1'来填充。如果是这样的话,你可以用下面的语句实现:
    insert into t1 
    select atable.maxa+btable.rn,btable.e,ctable.f,'1' from (select max(a) maxa from t1) atable,(select e,rownum rn from t2) btable,(select f,rownum rn from t3) ctable where btable.rn=ctable.rn;本机已通过调试,你自己再看看。
      

  4.   

    create or replace pro
    is 
    cursor cur is select t2.e e,t3.f f from t2,t3;
    va t1.a%type;
    begin
    select max(a) into va from t1;
    va:=va+1;
    for currec in cur loop
    insert into t1 values (va,currec.e,currec.f,'1');
    va:=va+1;
    end loop;
    end pro;
    我不知道我 有没有实现你的目的.
      

  5.   

    楼上的是可以,这样做的前提是,t2和t3反正都是测试用的,没什么意义。否则这样出来的数据毫无用处。rownum是一个会根据查询变化的值,而不是绝对值
      

  6.   

    sorry,中间插了一个,上面说的是针对skystar99047(天星) 
    另外maohuijian(mao)的做法难道不是两个表的乘积么,呵呵
      

  7.   

    楼主,我觉得表达就有问题:‘我现在把t2,t3,的所有数据都加到t1中,t2和t3的记录数相等。’,对,记录数是相等,那么表之间没有关系的吗?难到乱插吗?我觉得不可以,这样的话,就根本没有意义!我可以随便的在t2,t3表之间挑数据插入吗?
      

  8.   

    cursor cur is select t2.e e,t3.f f from t2,t3;
    这个方法不错,问题已经解决,
    多谢各位啦,
      

  9.   

    select max(a) from t1仅仅返回的是一条数据,而(select e from t2),(select f from t3)都是返回多条。必须要保证(select max(a)+1 from t1),(select e from t2),(select f from t3)有一个字段进行关联,才不会出现笛卡尔积
      

  10.   

    提问本身缺少t2和t3的关系,t2.e和t3.f以什么方式组合并插入t1呢?