请大虾帮助,关于BOM的问题原贴
http://topic.csdn.net/u/20100404/15/6c440190-12aa-47d3-9c39-058212830b9a.html?69939物料清单如下,很显然有个物料包含的死循环 A-B-C-A
A
/ \
B |
/ \ /
C D
/ / \
A E F 如何编写程序快速的找出这样的循环?实际应用中物料清单很庞大,级数也很多。BOM表
物品id 部件id 需要数量 替代部件(等其他字段)
A B 1
A D 1
B C 1
C A 1
D E 1
D F 1
http://topic.csdn.net/u/20100404/15/6c440190-12aa-47d3-9c39-058212830b9a.html?69939物料清单如下,很显然有个物料包含的死循环 A-B-C-A
A
/ \
B |
/ \ /
C D
/ / \
A E F 如何编写程序快速的找出这样的循环?实际应用中物料清单很庞大,级数也很多。BOM表
物品id 部件id 需要数量 替代部件(等其他字段)
A B 1
A D 1
B C 1
C A 1
D E 1
D F 1
解决方案 »
- Oracle 10g 采用EM做调度定制备份。
- oracle保留两个月的日志 要怎么写,会写server的
- 新手求教一个问题:oracle服务端的防火墙如何设置?
- 请问怎么提升 oracle 大量数据删除插入的并行操作性能.
- 在oracle中数据库实例不可用并且到实例的代理连接失败 请问怎么处理?
- [求教]应用程序中要实现多少并发控制
- sqlldr如何正确导入字段内容中有半个汉字结尾的数据?
- 我在使用plsql 的execute immediate的时候,总是发现下面的问题
- 求在本机连其他主机上的ORACLE数据库的方法(详见内)
- Oracle的安装和删除问题?在线等待
- oracle 批量更新问题
- 请教ado连接Oracle数据库时,日期精度变化的问题
select t.* from table1 t
where connect_by_iscycle='1'
start with not exists(select 1 from table1 where 部件id=t.物品id)
connect by nocycle prior 部件id=物品id
在使用connect by 时,如果不指定nocycle, ORACLE在检测出有死循环时就报会异常,只要获取这个异常就说明有死循环
此种方式代码少,效率好。2)自已写代码实现相应的算法来检测
楼主的这个CASE,跟数据结构里的“怎样快速检测出一个巨大的单链表中是否具备死链及其位置”是完全一样的,只需要把相关的算法写成PL-sql即可。
可参考:http://hi.baidu.com/moon_yly/blog/item/d104aa57c473adcfb745aeca.html另外,以后提问题请给出create table, insert into, 以方便我们快速处理问题
C A C->A->B->D->C
实际上应该没有这个循环。
--------------------------
我又看了下
多了个D 是由于父级A有BD两个子级引起的按逻辑看
C是存在一个循环的:
C->A->B->C楼主的意思是不是C已经存在于A的循环中了 所以只需要A就OK,不需要选出C?
...