There are two table
s : one is the master
and one the detail
( foreign key ). In the master
table there is a hierarchy
structure : each master
row has its parent
hierarchy ( self-foreign key ). Perhaps the DML of the tables can explain it clearly :
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'
As you can see 'classe_menu' is the master
table and 'menu' is the detail
table ; but inside the master table 'classe_menu' there is also a hierarchy
structure implemented by the 'class_menu_parent' column : a 'classe_menu' row is a root
of the hierarchy
if its 'class_menu_parent' is NULL
.
Now what I want is to get all 'classe_menu' root rows and the 'menu' rows for all 'classe_menu' , that is for all root 'classe_menu' and all of its children
.
How to do that ?