表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 青岛
---------------------
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 青岛
解决方案 »
- 请教一个biee 11g的知识 求大侠指点迷津
- 执行插入的存储过程问题
- 采用full outer join后SQL语句执行太慢,结果出不来了
- oracle 导入出错 请帮帮忙 小弟先谢过了
- 送分40分:有一个建表的脚本文件,请教在ORACLE10的哪个功能中可以使用它来建表
- 关于数据库连接的问题
- SQL 2000 与ORACLE 能否在同一台机器上运行
- 问下关于EanagementServer的问题~!
- 在plsql 创建一个用户叫张三,并给他dba权限,登陆时出现ORA-01031权限不足,怎样解决,求解,。。。。。。
- 怎么查询每一天的第一条记录,和最后一条记录
- 循环执行存储过程
- 这种情况如何对月份分组后取值?
单数时SC4626 青岛
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,可用存储过程
就像我上面写的,我设的连接条件就是单号连大连的卡车,双号连青岛的飞机
如果你的B表里的数据不止这么点,那一点要相清楚你A表和B表的连接的规律,否则只能做全连接
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 青岛
==================================
这样的结果,你还不如一条条手工加纪录
这样不行啊,出现同样的两个产品,b表14条记录每个产品出来14个怎么行,一个产品只能出现一个
===========================================================================
在你没有规律的前提下,那只有一个办法,办法总是有的
就是:手工修改每条纪录
你可以写个存储过程,先用游标取出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表去
)
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;
/
写了个存储过程,楼主参考下吧
)
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;上面有些东西没删除干净