有两个table
s :一个是 the master
,一个是detail
(外键)。表中master
有一个hierarchy
结构:每一master
行都有其parent
层次结构(自外键)。也许表格的 DML 可以清楚地解释它:
CREATE TABLE classe_menu (
class_menu_code int(10) NOT NULL auto_increment,
class_menu_lib varchar(50) default NULL,
class_menu_comment text,
class_menu_deleted tinyint(1) default '0',
class_menu_ordre int(11) default NULL,
class_menu_parent int(10) default NULL,
PRIMARY KEY (class_menu_code) ,
KEY association_108_fk (class_menu_parent),
CONSTRAINT fk_association_108 FOREIGN KEY (class_menu_parent) REFERENCES classe_menu (class_menu_code)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE menu (
menu_code int(10) NOT NULL auto_increment,
class_menu_code int(10) default NULL,
menu_lib varchar(100) default NULL,
menu_url varchar(255) default NULL,
menu_titre varchar(100) default NULL,
menu_parent decimal(10,0) default NULL,
menu_visible tinyint(1) default NULL,
menu_ordre decimal(2,0) default NULL,
menu_action varchar(50) default NULL,
menu_icone_img varchar(255) default NULL,
menu_icone_flag tinyint(1) default '0',
menu_icone_title varchar(50) default NULL,
menu_deleted tinyint(1) default '0',
menu_tooltip varchar(25) default NULL,
menu_trace text,
menu_image varchar(255) default NULL,
menu_contextuel tinyint(1) default '0',
menu_logo varchar(255) default NULL,
menu_display int(1) default '0',
PRIMARY KEY (menu_code),
KEY association_109_fk (class_menu_code),
CONSTRAINT fk_association_109 FOREIGN KEY (class_menu_code) REFERENCES classe_menu (class_menu_code)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='liste des menus du site'
如您所见,“classe_menu”是master
表格,“menu”是detail
表格;但在主表“classe_menu”内部还有一个hierarchy
由“class_menu_parent”列实现的结构:如果“class_menu_parent”为“classe_menu”行,则“classe_menu”行是其中的root
一个。hierarchy
NULL
现在我想要的是获取所有 'classe_menu'根行和所有 'classe_menu' 的 'menu' 行,即所有根 'classe_menu' 及其所有children
.
怎么做 ?