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