connect by 是结构化查询中用到的,其基本语法是:
select ... from tablename start by cond1
connect by cond2
where cond3;
简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
id,parentid那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。
用上述语法的查询可以取得这棵树的所有记录。
其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
COND2是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR ID=PRAENTID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。
COND3是过滤条件,用于对返回的所有记录进行过滤。
具体细节还是需要看看书,这个东东很有用的。
select ... from tablename start by cond1
connect by cond2
where cond3;
简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
id,parentid那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。
用上述语法的查询可以取得这棵树的所有记录。
其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
COND2是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR ID=PRAENTID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。
COND3是过滤条件,用于对返回的所有记录进行过滤。
具体细节还是需要看看书,这个东东很有用的。
解决方案 »
- spool导出VARCHAR2(4000)的数据就换行了,linesize设置了貌似没有什么效果。急急急,求助。。
- update 1000多条语句很慢.请问我该如何找出问题来.
- 求解一个oracle触发器,
- 数据库日志满了,有警告功能吗
- oracle 实例自动关闭
- 如何在编译一个包的时候跟踪啊?
- 119
- oracle用plsql打开后,package里有sys.dbms_##的东东,是什么?还有plsql中packages里面一般会发些什么用途东东
- 再请教左关联的SQL语句(Oracle)一次,刚刚问错了,谢谢各位
- 如何实现将sqlserver2008上面的数据同步到oracle11g上去?
- 这样奇怪的事情?
- 为什么不能安装?
好像谈不上什么限制,把SQL放到GOLDEN,TOAD中看看,具体报什么错,具体位置在哪里?
当然检查拼写,也是必要的,prior。
我周一早上9:00要出差,周二回来。
start with assembly_item_id=52591
connect by assembly_item_id=prior component_item_id语法应该没问题,我是用视图来建结构树的,视图又两个表生成。我把视图中的数据写到我自己建的表中建结构树就没问题。用视图时出现ora-01437:无法连接connect by 的错误对话框。
视图:
CREATE OR REPLACE VIEW AA AS
(SELECT ALL BOM.BOM_BILL_OF_MATERIALS.ASSEMBLY_ITEM_ID, BOM.BOM_INVENTORY_COMPONENTS.COMPONENT_ITEM_ID,
BOM.BOM_INVENTORY_COMPONENTS.COMPONENT_QUANTITY
FROM BOM.BOM_BILL_OF_MATERIALS, BOM.BOM_INVENTORY_COMPONENTS
WHERE (BOM.BOM_BILL_OF_MATERIALS.BILL_SEQUENCE_ID=BOM.BOM_INVENTORY_COMPONENTS.BILL_SEQUENCE_ID))
create table menu (menuid number(7),refid number(7),caption varchar2(20))
/
select * from menu connect by refid=prior menuid start with refid is null;
的确是有限制,意思好像是说不能用于连接查询,你的视图中有连接,要不用个临时表吧。