求一sql语句,各位大虾帮忙!!!!!!!!!!!!!!!!!!

lintao82 2007-09-19 11:25:06
表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 青岛
...全文
112 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinglht 2007-09-19
  • 打赏
  • 举报
回复
根据什么规则呢?
hebo2005 2007-09-19
  • 打赏
  • 举报
回复
关键你要给出两张表的联接规律,没有联接规律就只能统统联接,会出现许多你不想要的字段
就像我上面写的,我设的连接条件就是单号连大连的卡车,双号连青岛的飞机
如果你的B表里的数据不止这么点,那一点要相清楚你A表和B表的连接的规律,否则只能做全连接
lintao82 2007-09-19
  • 打赏
  • 举报
回复
a表和b表是没有关联的,a表数据多,b表数据少些,就是把b表数据补充到a表,生成c表就行
hebo2005 2007-09-19
  • 打赏
  • 举报
回复
给你想了变通的办法
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,可用存储过程
hebo2005 2007-09-19
  • 打赏
  • 举报
回复
没有关联字段啊,唯一能看出规律的就item_id为双数时辽BXF589 大连
单数时SC4626 青岛
lintao82 2007-09-19
  • 打赏
  • 举报
回复
谢谢已经解决

hebo2005 2007-09-19
  • 打赏
  • 举报
回复
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;

上面有些东西没删除干净
hebo2005 2007-09-19
  • 打赏
  • 举报
回复
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;
/
写了个存储过程,楼主参考下吧
jerome_michelle 2007-09-19
  • 打赏
  • 举报
回复
lz的表设计的很不合理。两个表中没有关联,还是重新考虑好业务规则,再设计表为好。
lintao82 2007-09-19
  • 打赏
  • 举报
回复
对数据库操作不太熟练,可不可以给出一个完整的例子
hebo2005 2007-09-19
  • 打赏
  • 举报
回复
看样子你是要从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表去
lintao82 2007-09-19
  • 打赏
  • 举报
回复
各位帮帮忙忙,9W多条数据呢
hebo2005 2007-09-19
  • 打赏
  • 举报
回复
lintao82(佛跳墙) ( ) 信誉:100 2007-09-19 13:23:03 得分: 0


这样不行啊,出现同样的两个产品,b表14条记录每个产品出来14个怎么行,一个产品只能出现一个


===========================================================================
在你没有规律的前提下,那只有一个办法,办法总是有的
就是:

手工修改每条纪录
lintao82 2007-09-19
  • 打赏
  • 举报
回复
这样不行啊,出现同样的两个产品,b表14条记录每个产品出来14个怎么行,一个产品只能出现一个
hebo2005 2007-09-19
  • 打赏
  • 举报
回复
如果没有规律,直接连接
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 青岛
==================================
这样的结果,你还不如一条条手工加纪录
lintao82 2007-09-19
  • 打赏
  • 举报
回复
是啊,a表是产品,b表是运输信息,a表数据很多都是因为原来没有运输信息,所以临时编造了一个b表,为了能显得真实点,就编了14条运输记录,,,现在就想把编造的这14条数据,补充到a表中,,所,a,b两表也不需要什么规律,能把b表补充到a表就可以了
目 录 摘要 ……………………………………………… 1 第一章 绪论 ……………………………………………… 2 第二章 需求分析 ……………………………………………… 4 2.1、数据库基本信息 ……………………………………… 4 2.2 、 系统的功能 ……………………………………… 4 第三章 数据分析与建模 ……………………………………………… 5 3.1、数据分析 ……………………………………… 5 3.2、数据模型 ……………………………………… 5 第四章 数据库建立 ……………………………………………… 6 4.1、数据库表的建立 ……………………………………… 6 4.2、数据库E-R图和关系图的建立………………………… 8 第五章 数据库应用开发 ……………………………………………… 10 5.1、数据库实时数据 ……………………………………… 10 5.2、数据库存储过程 ……………………………………… 11 5.3、数据库触发器 ……………………………………… 13 5.4、VB前台程序设计 ……………………………………… 14 5.5、功能操作说明 ……………………………………… 25 第六章 结论与体会 ……………………………………………… 26 致谢 ……………………………………………… 26 参考文献 ……………………………………………… 27 系统+文档都有; 不知道是不是各位大虾需要的!!
笔试(erp系统管理员)题目 求解 偶乃一应届毕业生,上星期在网上见到一不错的公司招oracle数据库管理,于是屁颠屁颠跑到那公司,骗过门卫和保安,咨询了搞卫生的阿姨后,见到了人力资源部主管,话都没说上两句,给偶一道题目(erp系统管理员),结果没几个会做的。其实我自己也挺想往erp方向发展,所以打算下个星期再去。 请各位大虾们帮帮忙忙,提点提点。(我在论坛上查了些,资料,还是有好多不会的。) 1。列出 erp供应商及erp产品的名称,版本? (erp供应商是不是:racle erp在咱国内的用户比如,华菱、湘钢、衡钢、承 钢、济钢等等。名称和版本呢?) 2。名词解释 erp,crm,hr,oa,srm,pdm (我只查到了erp,crm,hr的解释,其他的查不到) 3。用一句话说明 bom,采购计划,生产订单,销售订单,物料清单 (查不到 ) 4。写sql语句。 ‘存货档案’(表一): 存货编码(c),存货名称(c),存货规格(c),存货类别(c) ‘发货单’(表二):存货编码(c),数量(n),单价(n) 用sql写出 A:存货类别为'办公用品',发货金额在1000元以下的所有发货单 B: 按存货名称汇总发货单的发货金额 (此题会做一点点,但是写得不全,还得请大家指导) 5 写出erp系统对'销售发货单',‘销售普通发票’生成的会计分录 (完全摸不着头脑)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧