一个树形表,LEVEL1为根节点,逐层向下展开。
问题1:
通过输入一个ITEM_ID能够找到所有上层的数据
例如 :输入18 可以查询出
2,1,null,备注2
7,2,2,备注7问题2:
通过输入一个ITEM_ID能够找到所有下层的数据
例如 :输入1可以查询出
6,2,null,备注6
15,3,6,备注15create table CHECKLEVEL 
(
   ITEM_ID              decimal(20) not null,
   LEVEL                decimal(20),
   PARENT_IND_ITEM_ID   decimal(20),
   MEMO                 VARCHAR(1000),
   primary key (ITEM_ID)
);insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (1, 1,    null,'备注1');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (2, 1,    null,'备注2');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (3, 1,    null,'备注3');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (4, 1,    null,'备注4');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (5, 1,    null,'备注5');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (6, 2,    1,'备注6');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (7, 2,    2,'备注7');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (8, 2,    2,'备注8');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (9, 2,    2,'备注9');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (10, 2,    3,'备注10');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (11, 2,    4,'备注11');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (12, 2,    4,'备注12');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (13, 2,    4,'备注13');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (14, 2,    5,'备注14');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (15, 3,    6,'备注15');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (16, 3,    7,'备注16');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (17, 3,    7,'备注17');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (18, 3,    7,'备注18');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (19, 3,    7,'备注19');
insert into CHECKLEVEL (ITEM_ID, LEVEL, PARENT_IND_ITEM_ID,MEMO) values (20, 3,    7,'备注20');SELECT * FROM CHECKLEVEL;DROP TABLE CHECKLEVEL;

解决方案 »

  1.   

    物料查询与物料反查?BOM的表结构设计不是太好。个人认为在数据库端做应该不是太好。可以写一个通用的树形结构的工具类来解决此类问题。
      

  2.   

    http://blog.csdn.net/acmain_chm/article/details/4142971
    MySQL中进行树状所有子节点的查询
    在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们...